rename group-id and artifact-id, fix recording points render
This commit is contained in:
parent
8242b2c601
commit
45998bbe2e
@ -14,5 +14,5 @@ fabric_version=0.102.0+1.21
|
|||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.1.2+1.21
|
mod_version = 1.1.2+1.21
|
||||||
maven_group = themixray.repeating.mod
|
maven_group = ru.themixray
|
||||||
archives_base_name = repeating-mod
|
archives_base_name = repeating-mod
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
@ -15,13 +15,13 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import themixray.repeating.mod.event.events.DelayEvent;
|
import ru.themixray.repeating_mod.event.events.DelayEvent;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
import themixray.repeating.mod.event.events.InputEvent;
|
import ru.themixray.repeating_mod.event.events.InputEvent;
|
||||||
import themixray.repeating.mod.event.events.MoveEvent;
|
import ru.themixray.repeating_mod.event.events.MoveEvent;
|
||||||
import themixray.repeating.mod.render.RenderHelper;
|
import ru.themixray.repeating_mod.render.RenderHelper;
|
||||||
import themixray.repeating.mod.render.RenderSystem;
|
import ru.themixray.repeating_mod.render.RenderSystem;
|
||||||
import themixray.repeating.mod.render.buffer.WorldBuffer;
|
import ru.themixray.repeating_mod.render.buffer.WorldBuffer;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -35,21 +35,21 @@ public class Main implements ClientModInitializer {
|
|||||||
public static final FabricLoader loader = FabricLoader.getInstance();
|
public static final FabricLoader loader = FabricLoader.getInstance();
|
||||||
public static Main me;
|
public static Main me;
|
||||||
|
|
||||||
public RecordList record_list;
|
public ru.themixray.repeating_mod.RecordList record_list;
|
||||||
public RecordState now_record;
|
public ru.themixray.repeating_mod.RecordState now_record;
|
||||||
|
|
||||||
public boolean is_recording = false;
|
public boolean is_recording = false;
|
||||||
public long last_record = -1;
|
public long last_record = -1;
|
||||||
public TickTask move_tick = null;
|
public ru.themixray.repeating_mod.TickTask move_tick = null;
|
||||||
|
|
||||||
public TickTask replay_tick = null;
|
public ru.themixray.repeating_mod.TickTask replay_tick = null;
|
||||||
public boolean is_replaying = false;
|
public boolean is_replaying = false;
|
||||||
public boolean loop_replay = false;
|
public boolean loop_replay = false;
|
||||||
public static InputEvent input_replay = null;
|
public static InputEvent input_replay = null;
|
||||||
|
|
||||||
public long living_ticks = 0;
|
public long living_ticks = 0;
|
||||||
|
|
||||||
public static RepeatingScreen menu;
|
public static ru.themixray.repeating_mod.RepeatingScreen menu;
|
||||||
private static KeyBinding menu_key;
|
private static KeyBinding menu_key;
|
||||||
private static KeyBinding toggle_replay_key;
|
private static KeyBinding toggle_replay_key;
|
||||||
private static KeyBinding toggle_record_key;
|
private static KeyBinding toggle_record_key;
|
||||||
@ -58,7 +58,7 @@ public class Main implements ClientModInitializer {
|
|||||||
|
|
||||||
public static Random rand = new Random();
|
public static Random rand = new Random();
|
||||||
|
|
||||||
public EasyConfig conf;
|
public ru.themixray.repeating_mod.EasyConfig conf;
|
||||||
public File records_folder;
|
public File records_folder;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -71,11 +71,11 @@ public class Main implements ClientModInitializer {
|
|||||||
records_folder = new File(FabricLoader.getInstance().getGameDir().toFile(),"repeating_mod_records");
|
records_folder = new File(FabricLoader.getInstance().getGameDir().toFile(),"repeating_mod_records");
|
||||||
if (!records_folder.exists()) records_folder.mkdir();
|
if (!records_folder.exists()) records_folder.mkdir();
|
||||||
|
|
||||||
record_list = new RecordList(records_folder);
|
record_list = new ru.themixray.repeating_mod.RecordList(records_folder);
|
||||||
record_list.loadRecords();
|
record_list.loadRecords();
|
||||||
|
|
||||||
RenderSystem.init();
|
RenderSystem.init();
|
||||||
WorldRenderEvents.LAST.register(context -> {
|
WorldRenderEvents.AFTER_ENTITIES.register(context -> {
|
||||||
WorldBuffer buffer = RenderHelper.startTri(context);
|
WorldBuffer buffer = RenderHelper.startTri(context);
|
||||||
if (now_record != null) {
|
if (now_record != null) {
|
||||||
Vec3d start_pos = now_record.getStartRecordPos();
|
Vec3d start_pos = now_record.getStartRecordPos();
|
||||||
@ -88,13 +88,13 @@ public class Main implements ClientModInitializer {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
||||||
TickTask.tickTasks(TickTask.TickAt.CLIENT_EVENT);
|
ru.themixray.repeating_mod.TickTask.tickTasks(ru.themixray.repeating_mod.TickTask.TickAt.CLIENT_EVENT);
|
||||||
});
|
});
|
||||||
|
|
||||||
Map<String,String> def = new HashMap<>();
|
Map<String,String> def = new HashMap<>();
|
||||||
def.put("record_pos_delay", String.valueOf(record_pos_delay));
|
def.put("record_pos_delay", String.valueOf(record_pos_delay));
|
||||||
|
|
||||||
conf = new EasyConfig(loader.getConfigDir(),"repeating-mod",def);
|
conf = new ru.themixray.repeating_mod.EasyConfig(loader.getConfigDir(),"repeating-mod",def);
|
||||||
|
|
||||||
record_pos_delay = Long.parseLong(conf.data.get("record_pos_delay"));
|
record_pos_delay = Long.parseLong(conf.data.get("record_pos_delay"));
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ public class Main implements ClientModInitializer {
|
|||||||
"key.repeating-mod.toggle_record",InputUtil.Type.KEYSYM,
|
"key.repeating-mod.toggle_record",InputUtil.Type.KEYSYM,
|
||||||
-1,"text.repeating-mod.name"));
|
-1,"text.repeating-mod.name"));
|
||||||
|
|
||||||
menu = new RepeatingScreen();
|
menu = new ru.themixray.repeating_mod.RepeatingScreen();
|
||||||
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
||||||
if (menu_key.wasPressed())
|
if (menu_key.wasPressed())
|
||||||
client.setScreen(menu);
|
client.setScreen(menu);
|
||||||
@ -132,7 +132,7 @@ public class Main implements ClientModInitializer {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
new TickTask(0,0) {
|
new ru.themixray.repeating_mod.TickTask(0,0) {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
living_ticks++;
|
living_ticks++;
|
||||||
@ -142,7 +142,7 @@ public class Main implements ClientModInitializer {
|
|||||||
System.setProperty("java.awt.headless", "false");
|
System.setProperty("java.awt.headless", "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNowRecord(RecordState record) {
|
public void setNowRecord(ru.themixray.repeating_mod.RecordState record) {
|
||||||
now_record = record;
|
now_record = record;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ public class Main implements ClientModInitializer {
|
|||||||
now_record.setStartRecordPos(start_pos);
|
now_record.setStartRecordPos(start_pos);
|
||||||
|
|
||||||
if (record_pos_delay > 0) {
|
if (record_pos_delay > 0) {
|
||||||
move_tick = new TickTask(
|
move_tick = new ru.themixray.repeating_mod.TickTask(
|
||||||
record_pos_delay,
|
record_pos_delay,
|
||||||
record_pos_delay) {
|
record_pos_delay) {
|
||||||
@Override
|
@Override
|
||||||
@ -277,7 +277,7 @@ public class Main implements ClientModInitializer {
|
|||||||
|
|
||||||
List<RecordEvent> events = now_record.getEvents();
|
List<RecordEvent> events = now_record.getEvents();
|
||||||
|
|
||||||
replay_tick = new TickTask(0,0, TickTask.TickAt.CLIENT_EVENT) {
|
replay_tick = new ru.themixray.repeating_mod.TickTask(0,0, ru.themixray.repeating_mod.TickTask.TickAt.CLIENT_EVENT) {
|
||||||
public int replay_index = 0;
|
public int replay_index = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -1,12 +1,9 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import net.minecraft.text.Text;
|
import ru.themixray.repeating_mod.widget.RecordListWidget;
|
||||||
import themixray.repeating.mod.widget.RecordListWidget;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class RecordList {
|
public class RecordList {
|
@ -1,10 +1,9 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
@ -11,7 +11,7 @@ import net.minecraft.client.gui.tooltip.Tooltip;
|
|||||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||||
import net.minecraft.client.gui.widget.SliderWidget;
|
import net.minecraft.client.gui.widget.SliderWidget;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import themixray.repeating.mod.widget.RecordListWidget;
|
import ru.themixray.repeating_mod.widget.RecordListWidget;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -20,7 +20,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class RepeatingScreen extends Screen {
|
public class RepeatingScreen extends Screen {
|
||||||
private static List<RenderListener> render_listeners = new ArrayList<>();
|
private static List<ru.themixray.repeating_mod.RenderListener> render_listeners = new ArrayList<>();
|
||||||
|
|
||||||
public ButtonWidget record_btn;
|
public ButtonWidget record_btn;
|
||||||
public ButtonWidget loop_btn;
|
public ButtonWidget loop_btn;
|
||||||
@ -34,18 +34,18 @@ public class RepeatingScreen extends Screen {
|
|||||||
super(Text.empty());
|
super(Text.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addRenderListener(RenderListener render) {
|
public static void addRenderListener(ru.themixray.repeating_mod.RenderListener render) {
|
||||||
render_listeners.add(render);
|
render_listeners.add(render);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeRenderListener(RenderListener render) {
|
public static void removeRenderListener(ru.themixray.repeating_mod.RenderListener render) {
|
||||||
render_listeners.remove(render);
|
render_listeners.remove(render);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateButtons() {
|
public void updateButtons() {
|
||||||
if (was_build) {
|
if (was_build) {
|
||||||
record_btn.setMessage(Text.translatable("text.repeating-mod." + ((Main.me.is_recording) ? "stop_record" : "start_record")));
|
record_btn.setMessage(Text.translatable("text.repeating-mod." + ((ru.themixray.repeating_mod.Main.me.is_recording) ? "stop_record" : "start_record")));
|
||||||
loop_btn.setMessage(Text.translatable("text.repeating-mod." + ((Main.me.loop_replay) ? "off_loop" : "on_loop")));
|
loop_btn.setMessage(Text.translatable("text.repeating-mod." + ((ru.themixray.repeating_mod.Main.me.loop_replay) ? "off_loop" : "on_loop")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ public class RepeatingScreen extends Screen {
|
|||||||
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||||
renderBackground(context, mouseX, mouseY, delta);
|
renderBackground(context, mouseX, mouseY, delta);
|
||||||
|
|
||||||
for (RenderListener l : render_listeners) {
|
for (ru.themixray.repeating_mod.RenderListener l : render_listeners) {
|
||||||
if (l.beforeRender()) {
|
if (l.beforeRender()) {
|
||||||
l.render(context, mouseX, mouseY, delta);
|
l.render(context, mouseX, mouseY, delta);
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ public class RepeatingScreen extends Screen {
|
|||||||
|
|
||||||
super.render(context, mouseX, mouseY, delta);
|
super.render(context, mouseX, mouseY, delta);
|
||||||
|
|
||||||
for (RenderListener l : render_listeners) {
|
for (ru.themixray.repeating_mod.RenderListener l : render_listeners) {
|
||||||
if (!l.beforeRender()) {
|
if (!l.beforeRender()) {
|
||||||
l.render(context, mouseX, mouseY, delta);
|
l.render(context, mouseX, mouseY, delta);
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ public class RepeatingScreen extends Screen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
RecordListWidget list_widget = Main.me.record_list.getWidget();
|
RecordListWidget list_widget = ru.themixray.repeating_mod.Main.me.record_list.getWidget();
|
||||||
|
|
||||||
list_widget.setX(width / 2 + 2);
|
list_widget.setX(width / 2 + 2);
|
||||||
list_widget.setY(height / 2 - list_widget.getHeight() / 2);
|
list_widget.setY(height / 2 - list_widget.getHeight() / 2);
|
||||||
@ -79,10 +79,10 @@ public class RepeatingScreen extends Screen {
|
|||||||
|
|
||||||
record_btn = ButtonWidget.builder(
|
record_btn = ButtonWidget.builder(
|
||||||
Text.translatable("text.repeating-mod.start_record"), button -> {
|
Text.translatable("text.repeating-mod.start_record"), button -> {
|
||||||
if (!Main.me.is_replaying) {
|
if (!ru.themixray.repeating_mod.Main.me.is_replaying) {
|
||||||
if (Main.me.is_recording)
|
if (ru.themixray.repeating_mod.Main.me.is_recording)
|
||||||
Main.me.stopRecording();
|
ru.themixray.repeating_mod.Main.me.stopRecording();
|
||||||
else Main.me.startRecording();
|
else ru.themixray.repeating_mod.Main.me.startRecording();
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -91,7 +91,7 @@ public class RepeatingScreen extends Screen {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
loop_btn = ButtonWidget.builder(Text.empty(), button -> {
|
loop_btn = ButtonWidget.builder(Text.empty(), button -> {
|
||||||
Main.me.loop_replay = !Main.me.loop_replay;
|
ru.themixray.repeating_mod.Main.me.loop_replay = !ru.themixray.repeating_mod.Main.me.loop_replay;
|
||||||
updateButtons();
|
updateButtons();
|
||||||
})
|
})
|
||||||
.dimensions(width / 2 - 120, height / 2 - 10, 120, 20)
|
.dimensions(width / 2 - 120, height / 2 - 10, 120, 20)
|
||||||
@ -100,9 +100,9 @@ public class RepeatingScreen extends Screen {
|
|||||||
|
|
||||||
pos_delay_slider = new SliderWidget(
|
pos_delay_slider = new SliderWidget(
|
||||||
width / 2 - 120, height / 2 + 12, 120, 20,
|
width / 2 - 120, height / 2 + 12, 120, 20,
|
||||||
(Main.me.record_pos_delay < 0) ? Text.translatable("text.repeating-mod.nan_pos_delay") :
|
(ru.themixray.repeating_mod.Main.me.record_pos_delay < 0) ? Text.translatable("text.repeating-mod.nan_pos_delay") :
|
||||||
Text.translatable("text.repeating-mod.pos_delay", String.valueOf(Main.me.record_pos_delay)),
|
Text.translatable("text.repeating-mod.pos_delay", String.valueOf(ru.themixray.repeating_mod.Main.me.record_pos_delay)),
|
||||||
(Main.me.record_pos_delay+1d)/101d) {
|
(ru.themixray.repeating_mod.Main.me.record_pos_delay+1d)/101d) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateMessage() {
|
protected void updateMessage() {
|
||||||
@ -116,9 +116,9 @@ public class RepeatingScreen extends Screen {
|
|||||||
double v = value*101d-1d;
|
double v = value*101d-1d;
|
||||||
if (v <= 1) setMessage(Text.translatable("text.repeating-mod.nan_pos_delay"));
|
if (v <= 1) setMessage(Text.translatable("text.repeating-mod.nan_pos_delay"));
|
||||||
else setMessage(Text.translatable("text.repeating-mod.pos_delay", String.valueOf((long) v)));
|
else setMessage(Text.translatable("text.repeating-mod.pos_delay", String.valueOf((long) v)));
|
||||||
Main.me.record_pos_delay = (long) v;
|
ru.themixray.repeating_mod.Main.me.record_pos_delay = (long) v;
|
||||||
Main.me.conf.data.put("record_pos_delay",String.valueOf(Main.me.record_pos_delay));
|
ru.themixray.repeating_mod.Main.me.conf.data.put("record_pos_delay",String.valueOf(ru.themixray.repeating_mod.Main.me.record_pos_delay));
|
||||||
Main.me.conf.save();
|
ru.themixray.repeating_mod.Main.me.conf.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -148,7 +148,7 @@ public class RepeatingScreen extends Screen {
|
|||||||
if (files != null) {
|
if (files != null) {
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
try {
|
try {
|
||||||
Main.me.setNowRecord(Main.me.record_list.cloneRecord(file));
|
ru.themixray.repeating_mod.Main.me.setNowRecord(ru.themixray.repeating_mod.Main.me.record_list.cloneRecord(file));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod;
|
package ru.themixray.repeating_mod;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,6 +1,6 @@
|
|||||||
package themixray.repeating.mod.event;
|
package ru.themixray.repeating_mod.event;
|
||||||
|
|
||||||
import themixray.repeating.mod.event.events.*;
|
import ru.themixray.repeating_mod.event.events.*;
|
||||||
|
|
||||||
public abstract class RecordEvent {
|
public abstract class RecordEvent {
|
||||||
public abstract void replay();
|
public abstract void replay();
|
@ -1,6 +1,6 @@
|
|||||||
package themixray.repeating.mod.event;
|
package ru.themixray.repeating_mod.event;
|
||||||
|
|
||||||
import themixray.repeating.mod.event.events.*;
|
import ru.themixray.repeating_mod.event.events.*;
|
||||||
|
|
||||||
public enum RecordEventType {
|
public enum RecordEventType {
|
||||||
BLOCK_BREAK('b',"block_break",BlockBreakEvent.class),
|
BLOCK_BREAK('b',"block_break",BlockBreakEvent.class),
|
@ -1,8 +1,8 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class BlockBreakEvent extends RecordEvent {
|
public class BlockBreakEvent extends RecordEvent {
|
||||||
public BlockPos pos;
|
public BlockPos pos;
|
@ -1,12 +1,12 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.hit.BlockHitResult;
|
import net.minecraft.util.hit.BlockHitResult;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class BlockInteractEvent extends RecordEvent {
|
public class BlockInteractEvent extends RecordEvent {
|
||||||
public Hand hand;
|
public Hand hand;
|
@ -1,6 +1,6 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class DelayEvent extends RecordEvent {
|
public class DelayEvent extends RecordEvent {
|
||||||
public long delay;
|
public long delay;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiCharTypeEvent extends RecordEvent {
|
public class GuiCharTypeEvent extends RecordEvent {
|
||||||
private char chr;
|
private char chr;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiCloseEvent extends RecordEvent {
|
public class GuiCloseEvent extends RecordEvent {
|
||||||
public GuiCloseEvent() {}
|
public GuiCloseEvent() {}
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiKeyPressEvent extends RecordEvent {
|
public class GuiKeyPressEvent extends RecordEvent {
|
||||||
private int keyCode;
|
private int keyCode;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiKeyReleaseEvent extends RecordEvent {
|
public class GuiKeyReleaseEvent extends RecordEvent {
|
||||||
private int keyCode;
|
private int keyCode;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiMouseClickEvent extends RecordEvent {
|
public class GuiMouseClickEvent extends RecordEvent {
|
||||||
private double mouseX;
|
private double mouseX;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiMouseDragEvent extends RecordEvent {
|
public class GuiMouseDragEvent extends RecordEvent {
|
||||||
private double mouseX;
|
private double mouseX;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiMouseMoveEvent extends RecordEvent {
|
public class GuiMouseMoveEvent extends RecordEvent {
|
||||||
private double mouseX;
|
private double mouseX;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiMouseReleaseEvent extends RecordEvent {
|
public class GuiMouseReleaseEvent extends RecordEvent {
|
||||||
private double mouseX;
|
private double mouseX;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class GuiMouseScrollEvent extends RecordEvent {
|
public class GuiMouseScrollEvent extends RecordEvent {
|
||||||
private double mouseX;
|
private double mouseX;
|
@ -1,7 +1,7 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class InputEvent extends RecordEvent {
|
public class InputEvent extends RecordEvent {
|
||||||
public Boolean sneaking;
|
public Boolean sneaking;
|
@ -1,9 +1,9 @@
|
|||||||
package themixray.repeating.mod.event.events;
|
package ru.themixray.repeating_mod.event.events;
|
||||||
|
|
||||||
import net.minecraft.entity.MovementType;
|
import net.minecraft.entity.MovementType;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.RecordEvent;
|
import ru.themixray.repeating_mod.event.RecordEvent;
|
||||||
|
|
||||||
public class MoveEvent extends RecordEvent {
|
public class MoveEvent extends RecordEvent {
|
||||||
public Vec3d vec;
|
public Vec3d vec;
|
@ -1,12 +1,12 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.TickTask;
|
import ru.themixray.repeating_mod.TickTask;
|
||||||
|
|
||||||
@Mixin(MinecraftClient.class)
|
@Mixin(MinecraftClient.class)
|
||||||
public abstract class ClientMixin {
|
public abstract class ClientMixin {
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Shadow;
|
|||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.input.KeyboardInput;
|
import net.minecraft.client.input.KeyboardInput;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
|
|
||||||
@Mixin(KeyboardInput.class)
|
@Mixin(KeyboardInput.class)
|
||||||
public abstract class InputMixin {
|
public abstract class InputMixin {
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
||||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||||
@ -9,10 +9,10 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.event.events.BlockBreakEvent;
|
import ru.themixray.repeating_mod.event.events.BlockBreakEvent;
|
||||||
import themixray.repeating.mod.event.events.BlockInteractEvent;
|
import ru.themixray.repeating_mod.event.events.BlockInteractEvent;
|
||||||
import themixray.repeating.mod.TickTask;
|
import ru.themixray.repeating_mod.TickTask;
|
||||||
|
|
||||||
@Mixin(ClientPlayerEntity.class)
|
@Mixin(ClientPlayerEntity.class)
|
||||||
public abstract class MovementMixin {
|
public abstract class MovementMixin {
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||||
import net.minecraft.network.listener.ServerPlayPacketListener;
|
import net.minecraft.network.listener.ServerPlayPacketListener;
|
@ -1,18 +1,12 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents;
|
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.network.ClientConnection;
|
import net.minecraft.network.ClientConnection;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Mixin(ClientConnection.class)
|
@Mixin(ClientConnection.class)
|
||||||
public abstract class PlayerMixin {
|
public abstract class PlayerMixin {
|
@ -1,11 +1,11 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.render.*;
|
import net.minecraft.client.render.*;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import themixray.repeating.mod.TickTask;
|
import ru.themixray.repeating_mod.TickTask;
|
||||||
|
|
||||||
@Mixin(GameRenderer.class)
|
@Mixin(GameRenderer.class)
|
||||||
public abstract class RendererMixin {
|
public abstract class RendererMixin {
|
@ -1,20 +1,15 @@
|
|||||||
package themixray.repeating.mod.mixin;
|
package ru.themixray.repeating_mod.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.gui.AbstractParentElement;
|
import net.minecraft.client.gui.AbstractParentElement;
|
||||||
import net.minecraft.client.gui.Drawable;
|
import net.minecraft.client.gui.Drawable;
|
||||||
import net.minecraft.client.gui.Element;
|
|
||||||
import net.minecraft.client.gui.ParentElement;
|
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.TickTask;
|
import ru.themixray.repeating_mod.event.events.*;
|
||||||
import themixray.repeating.mod.event.events.*;
|
|
||||||
|
|
||||||
@Mixin(Screen.class)
|
@Mixin(Screen.class)
|
||||||
public abstract class ScreenMixin extends AbstractParentElement implements Drawable {
|
public abstract class ScreenMixin extends AbstractParentElement implements Drawable {
|
@ -1,10 +1,10 @@
|
|||||||
package themixray.repeating.mod.render;
|
package ru.themixray.repeating_mod.render;
|
||||||
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
|
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import org.joml.Vector3f;
|
||||||
import themixray.repeating.mod.render.buffer.WorldBuffer;
|
import ru.themixray.repeating_mod.render.buffer.WorldBuffer;
|
||||||
import themixray.repeating.mod.render.shader.ShaderManager;
|
import ru.themixray.repeating_mod.render.shader.ShaderManager;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
@ -27,8 +27,8 @@ public class RenderHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drawLine(WorldBuffer buffer, float x1, float y1, float z1, float x2, float y2, float z2, Color color) {
|
public void drawLine(WorldBuffer buffer, float x1, float y1, float z1, float x2, float y2, float z2, Color color) {
|
||||||
buffer.vert(x1, y1, z1, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
buffer.vert(new Vector3f(x1, y1, z1), color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
||||||
buffer.vert(x2, y2, z2, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
buffer.vert(new Vector3f(x2, y2, z2), color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WorldBuffer startTri(WorldRenderContext context) {
|
public static WorldBuffer startTri(WorldRenderContext context) {
|
||||||
@ -49,9 +49,9 @@ public class RenderHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drawTri(WorldBuffer buffer, float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, Color color) {
|
public void drawTri(WorldBuffer buffer, float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, Color color) {
|
||||||
buffer.vert(x1, y1, z1, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
buffer.vert(new Vector3f(x1, y1, z1), color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
||||||
buffer.vert(x2, y2, z2, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
buffer.vert(new Vector3f(x2, y2, z2), color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
||||||
buffer.vert(x3, y3, z3, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
buffer.vert(new Vector3f(x3, y3, z3), color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void drawRectFromTri(WorldBuffer buffer,
|
public static void drawRectFromTri(WorldBuffer buffer,
|
@ -1,8 +1,8 @@
|
|||||||
package themixray.repeating.mod.render;
|
package ru.themixray.repeating_mod.render;
|
||||||
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import themixray.repeating.mod.render.buffer.BufferManager;
|
import ru.themixray.repeating_mod.render.buffer.BufferManager;
|
||||||
import themixray.repeating.mod.render.shader.ShaderManager;
|
import ru.themixray.repeating_mod.render.shader.ShaderManager;
|
||||||
|
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class RenderSystem {
|
public class RenderSystem {
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.render.buffer;
|
package ru.themixray.repeating_mod.render.buffer;
|
||||||
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
@ -1,14 +1,11 @@
|
|||||||
package themixray.repeating.mod.render.buffer;
|
package ru.themixray.repeating_mod.render.buffer;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
public class Vertex {
|
public class Vertex {
|
||||||
@Getter
|
@Getter
|
||||||
private float x;
|
private Vector3f pos;
|
||||||
@Getter
|
|
||||||
private float y;
|
|
||||||
@Getter
|
|
||||||
private float z;
|
|
||||||
@Getter
|
@Getter
|
||||||
private float r;
|
private float r;
|
||||||
@Getter
|
@Getter
|
||||||
@ -18,10 +15,8 @@ public class Vertex {
|
|||||||
@Getter
|
@Getter
|
||||||
private float a;
|
private float a;
|
||||||
|
|
||||||
public Vertex(float x, float y, float z, float r, float g, float b, float a) {
|
public Vertex(Vector3f pos, float r, float g, float b, float a) {
|
||||||
this.x = x;
|
this.pos = pos;
|
||||||
this.y = y;
|
|
||||||
this.z = z;
|
|
||||||
this.r = r;
|
this.r = r;
|
||||||
this.g = g;
|
this.g = g;
|
||||||
this.b = b;
|
this.b = b;
|
@ -1,11 +1,12 @@
|
|||||||
package themixray.repeating.mod.render.buffer;
|
package ru.themixray.repeating_mod.render.buffer;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
|
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
|
||||||
import net.minecraft.util.math.Vec3d;
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
|
import org.joml.Quaternionf;
|
||||||
|
import org.joml.Vector3f;
|
||||||
import org.lwjgl.BufferUtils;
|
import org.lwjgl.BufferUtils;
|
||||||
import themixray.repeating.mod.render.shader.Shader;
|
import ru.themixray.repeating_mod.render.shader.Shader;
|
||||||
|
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -18,17 +19,19 @@ public class WorldBuffer {
|
|||||||
private final int drawMode;
|
private final int drawMode;
|
||||||
private final Shader shader;
|
private final Shader shader;
|
||||||
private FloatBuffer projectionMatrix;
|
private FloatBuffer projectionMatrix;
|
||||||
private final Vec3d cameraPos;
|
private final Vector3f cameraPos;
|
||||||
|
private final Quaternionf cameraRot;
|
||||||
|
|
||||||
public WorldBuffer(int drawMode, Shader shader, WorldRenderContext worldRenderContext) {
|
public WorldBuffer(int drawMode, Shader shader, WorldRenderContext worldRenderContext) {
|
||||||
this.drawMode = drawMode;
|
this.drawMode = drawMode;
|
||||||
this.shader = shader;
|
this.shader = shader;
|
||||||
this.cameraPos = worldRenderContext.camera().getPos();
|
this.cameraPos = worldRenderContext.camera().getPos().toVector3f();
|
||||||
makeProjectionMatrix(worldRenderContext.projectionMatrix(), worldRenderContext.matrixStack().peek().getPositionMatrix());
|
this.cameraRot = worldRenderContext.camera().getRotation().invert();
|
||||||
|
this.projectionMatrix = worldRenderContext.projectionMatrix().mul(worldRenderContext.matrixStack().peek().getPositionMatrix()).get(BufferUtils.createFloatBuffer(16));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void vert(float x, float y, float z, float r, float g, float b, float a) {
|
public void vert(Vector3f pos, float r, float g, float b, float a) {
|
||||||
vertices.add(new Vertex(x - (float) cameraPos.x, y - (float) cameraPos.y, z - (float) cameraPos.z, r, g, b, a));
|
vertices.add(new Vertex(cameraRot.transform(pos.sub(cameraPos)), r, g, b, a));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void draw() {
|
public void draw() {
|
||||||
@ -36,7 +39,7 @@ public class WorldBuffer {
|
|||||||
BufferManager.bindBuffer();
|
BufferManager.bindBuffer();
|
||||||
|
|
||||||
BufferManager.writeBuffer(getBuffer());
|
BufferManager.writeBuffer(getBuffer());
|
||||||
applyProjectionMatrix();
|
shader.uniformMatrix4f("u_projection", projectionMatrix);
|
||||||
|
|
||||||
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
|
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
@ -55,12 +58,12 @@ public class WorldBuffer {
|
|||||||
private FloatBuffer getBuffer() {
|
private FloatBuffer getBuffer() {
|
||||||
FloatBuffer floatBuffer = BufferUtils.createFloatBuffer(vertices.size() * 7);
|
FloatBuffer floatBuffer = BufferUtils.createFloatBuffer(vertices.size() * 7);
|
||||||
ArrayList<Float> floats = new ArrayList<>();
|
ArrayList<Float> floats = new ArrayList<>();
|
||||||
for (Vertex vertex : vertices) {
|
for (ru.themixray.repeating_mod.render.buffer.Vertex vertex : vertices) {
|
||||||
floats.add(vertex.getX());
|
floats.add(vertex.getPos().x);
|
||||||
floats.add(vertex.getY());
|
floats.add(vertex.getPos().y);
|
||||||
floats.add(vertex.getZ());
|
floats.add(vertex.getPos().z);
|
||||||
}
|
}
|
||||||
for (Vertex vertex : vertices) {
|
for (ru.themixray.repeating_mod.render.buffer.Vertex vertex : vertices) {
|
||||||
floats.add(vertex.getR());
|
floats.add(vertex.getR());
|
||||||
floats.add(vertex.getG());
|
floats.add(vertex.getG());
|
||||||
floats.add(vertex.getB());
|
floats.add(vertex.getB());
|
||||||
@ -71,12 +74,4 @@ public class WorldBuffer {
|
|||||||
floatBuffer.put(ArrayUtils.toPrimitive(floatArray));
|
floatBuffer.put(ArrayUtils.toPrimitive(floatArray));
|
||||||
return floatBuffer.flip();
|
return floatBuffer.flip();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeProjectionMatrix(Matrix4f projectionMatrix, Matrix4f viewModelMatrix) {
|
|
||||||
this.projectionMatrix = projectionMatrix.mul(viewModelMatrix).get(BufferUtils.createFloatBuffer(16));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyProjectionMatrix() {
|
|
||||||
shader.uniformMatrix4f("u_projection", projectionMatrix);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.render.shader;
|
package ru.themixray.repeating_mod.render.shader;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@ -12,8 +12,8 @@ public class Shader {
|
|||||||
|
|
||||||
|
|
||||||
public Shader(String name) {
|
public Shader(String name) {
|
||||||
int v = ShaderManager.loadShaderProgram(name, ShaderManager.ShaderType.VERTEX);
|
int v = ru.themixray.repeating_mod.render.shader.ShaderManager.loadShaderProgram(name, ru.themixray.repeating_mod.render.shader.ShaderManager.ShaderType.VERTEX);
|
||||||
int f = ShaderManager.loadShaderProgram(name, ShaderManager.ShaderType.FRAGMENT);
|
int f = ru.themixray.repeating_mod.render.shader.ShaderManager.loadShaderProgram(name, ru.themixray.repeating_mod.render.shader.ShaderManager.ShaderType.FRAGMENT);
|
||||||
this.id = glCreateProgram();
|
this.id = glCreateProgram();
|
||||||
glAttachShader(id, v);
|
glAttachShader(id, v);
|
||||||
glAttachShader(id, f);
|
glAttachShader(id, f);
|
@ -1,4 +1,4 @@
|
|||||||
package themixray.repeating.mod.render.shader;
|
package ru.themixray.repeating_mod.render.shader;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.platform.TextureUtil;
|
import com.mojang.blaze3d.platform.TextureUtil;
|
||||||
@ -27,14 +27,14 @@ import static org.lwjgl.opengl.GL33.*;
|
|||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class ShaderManager {
|
public class ShaderManager {
|
||||||
@Getter
|
@Getter
|
||||||
private Shader positionColorShader;
|
private ru.themixray.repeating_mod.render.shader.Shader positionColorShader;
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
ClientLifecycleEvents.CLIENT_STARTED.register(client -> loadShaders());
|
ClientLifecycleEvents.CLIENT_STARTED.register(client -> loadShaders());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadShaders() {
|
private void loadShaders() {
|
||||||
positionColorShader = new Shader("position_color");
|
positionColorShader = new ru.themixray.repeating_mod.render.shader.Shader("position_color");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int loadShaderProgram(String name, ShaderType type) {
|
public int loadShaderProgram(String name, ShaderType type) {
|
@ -1,22 +1,14 @@
|
|||||||
package themixray.repeating.mod.widget;
|
package ru.themixray.repeating_mod.widget;
|
||||||
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.Drawable;
|
|
||||||
import net.minecraft.client.gui.Element;
|
|
||||||
import net.minecraft.client.gui.Selectable;
|
|
||||||
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
|
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
|
||||||
import net.minecraft.client.gui.tooltip.Tooltip;
|
|
||||||
import net.minecraft.client.gui.widget.*;
|
import net.minecraft.client.gui.widget.*;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.RecordState;
|
import ru.themixray.repeating_mod.RecordState;
|
||||||
import themixray.repeating.mod.RepeatingScreen;
|
import ru.themixray.repeating_mod.RepeatingScreen;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class RecordListWidget extends ScrollableWidget {
|
public class RecordListWidget extends ScrollableWidget {
|
||||||
private LinkedList<RecordWidget> widgets = new LinkedList<>();
|
private LinkedList<RecordWidget> widgets = new LinkedList<>();
|
@ -1,17 +1,14 @@
|
|||||||
package themixray.repeating.mod.widget;
|
package ru.themixray.repeating_mod.widget;
|
||||||
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.Drawable;
|
import net.minecraft.client.gui.Drawable;
|
||||||
import net.minecraft.client.gui.tooltip.Tooltip;
|
import net.minecraft.client.gui.tooltip.Tooltip;
|
||||||
import net.minecraft.client.gui.widget.*;
|
import net.minecraft.client.gui.widget.*;
|
||||||
import net.minecraft.text.Style;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.text.TextColor;
|
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
import themixray.repeating.mod.Main;
|
import ru.themixray.repeating_mod.Main;
|
||||||
import themixray.repeating.mod.RecordState;
|
import ru.themixray.repeating_mod.RecordState;
|
||||||
import themixray.repeating.mod.RenderListener;
|
import ru.themixray.repeating_mod.RepeatingScreen;
|
||||||
import themixray.repeating.mod.RepeatingScreen;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
@ -19,7 +19,7 @@
|
|||||||
"environment": "client",
|
"environment": "client",
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"client": [
|
"client": [
|
||||||
"themixray.repeating.mod.Main"
|
"ru.themixray.repeating_mod.Main"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "themixray.repeating.mod.mixin",
|
"package": "ru.themixray.repeating_mod.mixin",
|
||||||
"compatibilityLevel": "JAVA_17",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user