diff --git a/jGui b/jGui index bf00dcf2..e9387ad0 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit bf00dcf2ce6cec358f08ff80bc4cfa3c289a988a +Subproject commit e9387ad0035ff2fb2f6eac3ddd9c469e3deccec8 diff --git a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java index 58f59ec1..81f16dbb 100644 --- a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java +++ b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java @@ -8,8 +8,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //#if MC>=11600 -//$$ import net.minecraft.client.render.Camera; -//$$ import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.render.Camera; +import net.minecraft.client.util.math.MatrixStack; //#endif //#if MC>=11400 @@ -30,12 +30,12 @@ public abstract class MixinShadersRender { private static void replayModCompat_disableRenderHand0( GameRenderer er, //#if MC>=11600 - //$$ MatrixStack stack, - //$$ Camera camera, + MatrixStack stack, + Camera camera, //#endif float partialTicks, //#if MC<11600 - int renderPass, + //$$ int renderPass, //#endif CallbackInfo ci) { //#if MC>=11400 diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index 48388e23..e9d4dece 100644 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -19,7 +19,6 @@ import com.replaymod.replaystudio.util.I18n; import com.replaymod.replaystudio.viaversion.ViaVersionPacketConverter; import com.replaymod.simplepathing.ReplayModSimplePathing; import de.johni0702.minecraft.gui.container.GuiScreen; -import lombok.Getter; import net.minecraft.client.MinecraftClient; import net.minecraft.util.Identifier; import net.minecraft.resource.DirectoryResourcePack; @@ -33,8 +32,6 @@ import org.apache.commons.io.FileUtils; //#if MC>=11400 import net.minecraft.client.options.Option; -import net.minecraft.resource.ResourcePackProvider; -import net.minecraft.resource.ResourcePackProfile; import net.minecraft.util.thread.ReentrantThreadExecutor; //#endif @@ -123,16 +120,17 @@ public class ReplayMod implements Module { - @Getter(lazy = true) - //#if MC>=11400 - private static final String minecraftVersion = MinecraftClient.getInstance().getGame().getVersion().getName(); - //#else - //#if MC>=11400 - //$$ private static final String minecraftVersion = MCPVersion.getMCVersion(); - //#else - //$$ private static final String minecraftVersion = Loader.MC_VERSION; - //#endif - //#endif + public static String getMinecraftVersion() { + //#if MC>=11400 + return MinecraftClient.getInstance().getGame().getVersion().getName(); + //#else + //#if MC>=11400 + //$$ return MCPVersion.getMCVersion(); + //#else + //$$ return Loader.MC_VERSION; + //#endif + //#endif + } public static final String MOD_ID = "replaymod"; @@ -184,14 +182,6 @@ public class ReplayMod implements } //#endif - //#if MC>=11400 - // Not needed on fabric, using MixinModResourcePackUtil instead. Could in theory also use it on 1.13 but it already works as is. - //#else - //#if MC>=11400 - //$$ DeferredWorkQueue.runLater(() -> MCVer.getMinecraft().getResourcePackList().addPackFinder(new LangResourcePack.Finder())); - //#endif - //#endif - // Register all RM modules modules.add(this); modules.add(new ReplayModRecording(this)); @@ -234,6 +224,7 @@ public class ReplayMod implements } public static final DirectoryResourcePack jGuiResourcePack; + public static final String JGUI_RESOURCE_PACK_NAME = "replaymod_jgui"; static { // Note: even preInit is too late and we'd have to issue another resource reload jGuiResourcePack = initJGuiResourcePack(); } @@ -245,6 +236,15 @@ public class ReplayMod implements } //noinspection UnnecessaryLocalVariable DirectoryResourcePack jGuiResourcePack = new DirectoryResourcePack(folder) { + @Override + //#if MC>=11400 + public String getName() { + //#else + //$$ public String getPackName() { + //#endif + return JGUI_RESOURCE_PACK_NAME; + } + @Override protected InputStream openFile(String resourceName) throws IOException { try { @@ -657,13 +657,13 @@ public class ReplayMod implements // Some nostalgia: "§8[§6Replay Mod§8]§r Your message goes here" //#if MC>=10904 //#if MC>=11600 - //$$ Style coloredDarkGray = Style.EMPTY.withColor(Formatting.DARK_GRAY); - //$$ Style coloredGold = Style.EMPTY.withColor(Formatting.GOLD); - //$$ Style alert = Style.EMPTY.withColor(warning ? Formatting.RED : Formatting.DARK_GREEN); + Style coloredDarkGray = Style.EMPTY.withColor(Formatting.DARK_GRAY); + Style coloredGold = Style.EMPTY.withColor(Formatting.GOLD); + Style alert = Style.EMPTY.withColor(warning ? Formatting.RED : Formatting.DARK_GREEN); //#else - Style coloredDarkGray = new Style().setColor(Formatting.DARK_GRAY); - Style coloredGold = new Style().setColor(Formatting.GOLD); - Style alert = new Style().setColor(warning ? Formatting.RED : Formatting.DARK_GREEN); + //$$ Style coloredDarkGray = new Style().setColor(Formatting.DARK_GRAY); + //$$ Style coloredGold = new Style().setColor(Formatting.GOLD); + //$$ Style alert = new Style().setColor(warning ? Formatting.RED : Formatting.DARK_GREEN); //#endif Text text = new LiteralText("[").setStyle(coloredDarkGray) .append(new TranslatableText("replaymod.title").setStyle(coloredGold)) diff --git a/src/main/java/com/replaymod/core/gui/GuiReplaySettings.java b/src/main/java/com/replaymod/core/gui/GuiReplaySettings.java index d25ac548..b13590db 100644 --- a/src/main/java/com/replaymod/core/gui/GuiReplaySettings.java +++ b/src/main/java/com/replaymod/core/gui/GuiReplaySettings.java @@ -14,7 +14,6 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout; import de.johni0702.minecraft.gui.utils.Consumer; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; -import lombok.RequiredArgsConstructor; import net.minecraft.client.resource.language.I18n; import java.util.List; @@ -115,11 +114,15 @@ public class GuiReplaySettings extends AbstractGuiScreen { return this; } - @RequiredArgsConstructor private static class MultipleChoiceDropdownEntry { private final Object value; private final String text; + public MultipleChoiceDropdownEntry(Object value, String text) { + this.value = value; + this.text = text; + } + @Override public String toString() { return text; diff --git a/src/main/java/com/replaymod/core/handler/MainMenuHandler.java b/src/main/java/com/replaymod/core/handler/MainMenuHandler.java index c0a8765e..905b2761 100644 --- a/src/main/java/com/replaymod/core/handler/MainMenuHandler.java +++ b/src/main/java/com/replaymod/core/handler/MainMenuHandler.java @@ -12,7 +12,7 @@ import java.util.List; import static com.replaymod.core.versions.MCVer.*; //#if MC>=11400 && MC<11600 -import net.minecraft.realms.RealmsScreenProxy; +//$$ import net.minecraft.realms.RealmsScreenProxy; //#endif //#if FABRIC>=1 @@ -72,53 +72,53 @@ public class MainMenuHandler extends EventRegistrations { //#endif } //#if MC>=11400 && MC<11600 - GuiMainMenuAccessor guiA = (GuiMainMenuAccessor) gui; - if (realmsOffset != 0 && guiA.getRealmsNotification() instanceof RealmsScreenProxy) { - guiA.setRealmsNotification(new RealmsNotificationProxy((RealmsScreenProxy) guiA.getRealmsNotification(), realmsOffset)); - } + //$$ GuiMainMenuAccessor guiA = (GuiMainMenuAccessor) gui; + //$$ if (realmsOffset != 0 && guiA.getRealmsNotification() instanceof RealmsScreenProxy) { + //$$ guiA.setRealmsNotification(new RealmsNotificationProxy((RealmsScreenProxy) guiA.getRealmsNotification(), realmsOffset)); + //$$ } //#endif } } //#if MC>=11400 && MC<11600 - private static class RealmsNotificationProxy extends Screen { - private final RealmsScreenProxy proxy; - private final int offset; - - private RealmsNotificationProxy(RealmsScreenProxy proxy, int offset) { + //$$ private static class RealmsNotificationProxy extends Screen { + //$$ private final RealmsScreenProxy proxy; + //$$ private final int offset; + //$$ + //$$ private RealmsNotificationProxy(RealmsScreenProxy proxy, int offset) { //#if MC>=11400 - super(null); + //$$ super(null); //#endif - this.proxy = proxy; - this.offset = offset; - } - - @Override - public void init(MinecraftClient mc, int width, int height) { - proxy.init(mc, width, height); - } - - @Override - public void tick() { - proxy.tick(); - } - - @Override - public void render(int mouseX, int mouseY, float partialTicks) { - GL11.glTranslated(0, offset, 0); - proxy.render(mouseX, mouseY - offset, partialTicks); - GL11.glTranslated(0, -offset, 0); - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { - return proxy.mouseClicked(mouseX, mouseY - offset, mouseButton); - } - - @Override - public void removed() { - proxy.removed(); - } - } + //$$ this.proxy = proxy; + //$$ this.offset = offset; + //$$ } + //$$ + //$$ @Override + //$$ public void init(MinecraftClient mc, int width, int height) { + //$$ proxy.init(mc, width, height); + //$$ } + //$$ + //$$ @Override + //$$ public void tick() { + //$$ proxy.tick(); + //$$ } + //$$ + //$$ @Override + //$$ public void render(int mouseX, int mouseY, float partialTicks) { + //$$ GL11.glTranslated(0, offset, 0); + //$$ proxy.render(mouseX, mouseY - offset, partialTicks); + //$$ GL11.glTranslated(0, -offset, 0); + //$$ } + //$$ + //$$ @Override + //$$ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { + //$$ return proxy.mouseClicked(mouseX, mouseY - offset, mouseButton); + //$$ } + //$$ + //$$ @Override + //$$ public void removed() { + //$$ proxy.removed(); + //$$ } + //$$ } //#endif } diff --git a/src/main/java/com/replaymod/core/mixin/MixinKeyboardListener.java b/src/main/java/com/replaymod/core/mixin/MixinKeyboardListener.java index 65b576fb..fb73d164 100644 --- a/src/main/java/com/replaymod/core/mixin/MixinKeyboardListener.java +++ b/src/main/java/com/replaymod/core/mixin/MixinKeyboardListener.java @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Keyboard.class) public class MixinKeyboardListener { - @Inject(method = "onKey", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/options/KeyBinding;onKeyPressed(Lnet/minecraft/client/util/InputUtil$KeyCode;)V", shift = At.Shift.AFTER)) + @Inject(method = "onKey", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/options/KeyBinding;onKeyPressed(Lnet/minecraft/client/util/InputUtil$Key;)V", shift = At.Shift.AFTER)) private void afterKeyBindingTick(long windowPointer, int key, int scanCode, int action, int modifiers, CallbackInfo ci) { KeyBindingEventCallback.EVENT.invoker().onKeybindingEvent(); KeyEventCallback.EVENT.invoker().onKeyEvent(key, scanCode, action, modifiers); diff --git a/src/main/java/com/replaymod/core/mixin/MixinModResourcePackUtil.java b/src/main/java/com/replaymod/core/mixin/MixinModResourcePackUtil.java deleted file mode 100644 index 6c4722b2..00000000 --- a/src/main/java/com/replaymod/core/mixin/MixinModResourcePackUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -//#if FABRIC>=1 -package com.replaymod.core.mixin; - -import com.replaymod.core.ReplayMod; -import com.replaymod.core.versions.LangResourcePack; -import net.fabricmc.fabric.api.resource.ModResourcePack; -import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; -import net.minecraft.resource.ResourcePack; -import net.minecraft.resource.ResourceType; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.List; - -@Mixin(value = ModResourcePackUtil.class, remap = false) -public class MixinModResourcePackUtil { - @Inject(method = "appendModResourcePacks", at = @At("RETURN"), remap = false) - private static void injectRMLangPack(List packList, ResourceType type, CallbackInfo ci) { - if (type != ResourceType.CLIENT_RESOURCES) return; - - for (int i = 0; i < packList.size(); i++) { - ResourcePack pack = packList.get(i); - if (pack instanceof ModResourcePack && ((ModResourcePack) pack).getFabricModMetadata().getId().equals(ReplayMod.MOD_ID)) { - ModContainer container = FabricLoader.getInstance().getModContainer(ReplayMod.MOD_ID).orElseThrow(IllegalAccessError::new); - packList.add(i, new LangResourcePack(container.getRootPath())); - if (ReplayMod.jGuiResourcePack != null) { - packList.add(i, ReplayMod.jGuiResourcePack); - } - return; - } - } - - throw new IllegalStateException("Could not find ReplayMod resource pack."); - } -} -//#endif diff --git a/src/main/java/com/replaymod/core/mixin/MixinMouse.java b/src/main/java/com/replaymod/core/mixin/MixinMouse.java index e6871a82..7ede977b 100644 --- a/src/main/java/com/replaymod/core/mixin/MixinMouse.java +++ b/src/main/java/com/replaymod/core/mixin/MixinMouse.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Mouse.class) public class MixinMouse { - @Inject(method = "onMouseButton", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/options/KeyBinding;onKeyPressed(Lnet/minecraft/client/util/InputUtil$KeyCode;)V", shift = At.Shift.AFTER)) + @Inject(method = "onMouseButton", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/options/KeyBinding;onKeyPressed(Lnet/minecraft/client/util/InputUtil$Key;)V", shift = At.Shift.AFTER)) private void afterKeyBindingTick(CallbackInfo ci) { KeyBindingEventCallback.EVENT.invoker().onKeybindingEvent(); } diff --git a/src/main/java/com/replaymod/core/mixin/Mixin_ContextualKeyBindings.java b/src/main/java/com/replaymod/core/mixin/Mixin_ContextualKeyBindings.java index 18e1ec58..ad7b8093 100644 --- a/src/main/java/com/replaymod/core/mixin/Mixin_ContextualKeyBindings.java +++ b/src/main/java/com/replaymod/core/mixin/Mixin_ContextualKeyBindings.java @@ -45,7 +45,7 @@ public class Mixin_ContextualKeyBindings { } else { // Not in a replay, remove all replay-exclusive keybindings for (KeyBinding keyBinding : onlyInReplay) { - if (Mixin_ContextualKeyBindings.keysById.remove(keyBinding.getId()) != null) { + if (Mixin_ContextualKeyBindings.keysById.remove(keyBinding.getTranslationKey()) != null) { temporarilyRemoved.add(keyBinding); } } @@ -55,7 +55,7 @@ public class Mixin_ContextualKeyBindings { @Inject(method = "updateKeysByCode", at = @At("RETURN")) private static void postContextualKeyBindings(CallbackInfo ci) { for (KeyBinding keyBinding : temporarilyRemoved) { - Mixin_ContextualKeyBindings.keysById.put(keyBinding.getId(), keyBinding); + Mixin_ContextualKeyBindings.keysById.put(keyBinding.getTranslationKey(), keyBinding); } temporarilyRemoved.clear(); } diff --git a/src/main/java/com/replaymod/core/mixin/Mixin_HideDynamicResourcePacks.java b/src/main/java/com/replaymod/core/mixin/Mixin_HideDynamicResourcePacks.java new file mode 100644 index 00000000..853c9cd4 --- /dev/null +++ b/src/main/java/com/replaymod/core/mixin/Mixin_HideDynamicResourcePacks.java @@ -0,0 +1,37 @@ +//#if FABRIC>=1 +package com.replaymod.core.mixin; + +import net.minecraft.client.gui.screen.pack.PackListWidget; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +//#if MC>=11600 +import net.minecraft.client.gui.screen.pack.PackScreen; +import net.minecraft.client.gui.screen.pack.ResourcePackOrganizer; +//#else +//$$ import net.minecraft.client.resource.ClientResourcePackProfile; +//#endif + +//#if MC>=11600 +@Mixin(PackScreen.class) +//#else +//$$ @Mixin(ResourcePackListWidget.class) +//#endif +public abstract class Mixin_HideDynamicResourcePacks { + //#if MC>=11600 + @Inject(method = "method_29672", at = @At("HEAD"), cancellable = true) + private void hideInternalPacks(PackListWidget packListWidget, ResourcePackOrganizer.Pack pack, CallbackInfo info) { + //#else + //$$ @Inject(method = "add", at = @At("HEAD"), cancellable = true) + //$$ private void hideInternalPacks(ResourcePackListWidget.ResourcePackEntry entry, CallbackInfo info) { + //$$ ClientResourcePackProfile pack = entry.getPack(); + //#endif + String name = pack.getDisplayName().asString(); + if (name.equals("replaymod_lang") || name.equals("replaymod_jgui")) { + info.cancel(); + } + } +} +//#endif diff --git a/src/main/java/com/replaymod/core/mixin/Mixin_RegisterDynamicResourcePacks.java b/src/main/java/com/replaymod/core/mixin/Mixin_RegisterDynamicResourcePacks.java new file mode 100644 index 00000000..fde3a013 --- /dev/null +++ b/src/main/java/com/replaymod/core/mixin/Mixin_RegisterDynamicResourcePacks.java @@ -0,0 +1,56 @@ +//#if FABRIC>=1 +package com.replaymod.core.mixin; + +import com.replaymod.core.ReplayMod; +import com.replaymod.core.versions.LangResourcePack; +import net.minecraft.client.resource.ClientBuiltinResourcePackProvider; +import net.minecraft.resource.ResourcePackProfile; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.function.Consumer; + +//#if MC>=11600 +import net.minecraft.resource.ResourcePackSource; +//#else +//$$ import java.util.Map; +//#endif + +@Mixin(ClientBuiltinResourcePackProvider.class) +public class Mixin_RegisterDynamicResourcePacks { + @Inject(method = "register", at = @At("RETURN")) + //#if MC>=11600 + private void registerReplayMod(Consumer consumer, ResourcePackProfile.Factory factory, CallbackInfo ci) { + //#else + //$$ private void registerReplayMod(Map map, ResourcePackProfile.Factory factory, CallbackInfo ci) { + //$$ Consumer consumer = (pack) -> map.put(pack.getName(), pack); + //#endif + + consumer.accept(ResourcePackProfile.of( + LangResourcePack.NAME, + true, + LangResourcePack::new, + factory, + ResourcePackProfile.InsertionPosition.BOTTOM + //#if MC>=11600 + , ResourcePackSource.PACK_SOURCE_BUILTIN + //#endif + )); + + if (ReplayMod.jGuiResourcePack != null) { + consumer.accept(ResourcePackProfile.of( + ReplayMod.JGUI_RESOURCE_PACK_NAME, + true, + () -> ReplayMod.jGuiResourcePack, + factory, + ResourcePackProfile.InsertionPosition.BOTTOM + //#if MC>=11600 + , ResourcePackSource.PACK_SOURCE_BUILTIN + //#endif + )); + } + } +} +//#endif diff --git a/src/main/java/com/replaymod/core/utils/Restrictions.java b/src/main/java/com/replaymod/core/utils/Restrictions.java index b47ff239..02c3eb3e 100644 --- a/src/main/java/com/replaymod/core/utils/Restrictions.java +++ b/src/main/java/com/replaymod/core/utils/Restrictions.java @@ -1,7 +1,7 @@ package com.replaymod.core.utils; import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; //#if MC>=10904 import net.minecraft.util.Identifier; //#endif diff --git a/src/main/java/com/replaymod/core/utils/WrappedTimer.java b/src/main/java/com/replaymod/core/utils/WrappedTimer.java index 6bcb14ef..2db83188 100644 --- a/src/main/java/com/replaymod/core/utils/WrappedTimer.java +++ b/src/main/java/com/replaymod/core/utils/WrappedTimer.java @@ -21,9 +21,9 @@ public class WrappedTimer extends RenderTickCounter { @Override public //#if MC>=11600 - //$$ int + int //#else - void + //$$ void //#endif beginRenderTick( //#if MC>=11400 @@ -33,7 +33,7 @@ public class WrappedTimer extends RenderTickCounter { copy(this, wrapped); try { //#if MC>=11600 - //$$ return + return //#endif wrapped.beginRenderTick( //#if MC>=11400 @@ -50,7 +50,7 @@ public class WrappedTimer extends RenderTickCounter { TimerAccessor toA = (TimerAccessor) to; //#if MC<11600 - to.ticksThisFrame = from.ticksThisFrame; + //$$ to.ticksThisFrame = from.ticksThisFrame; //#endif to.tickDelta = from.tickDelta; toA.setLastSyncSysClock(fromA.getLastSyncSysClock()); diff --git a/src/main/java/com/replaymod/core/versions/LangResourcePack.java b/src/main/java/com/replaymod/core/versions/LangResourcePack.java index 2fdb7bc4..63e4304c 100644 --- a/src/main/java/com/replaymod/core/versions/LangResourcePack.java +++ b/src/main/java/com/replaymod/core/versions/LangResourcePack.java @@ -27,6 +27,12 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +//#if FABRIC>=1 +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +//#else +//#endif + //#if MC>=11400 //#else //$$ import net.minecraft.resources.IPackFinder; @@ -42,7 +48,7 @@ import java.util.stream.Collectors; */ public class LangResourcePack extends AbstractFileResourcePack { private static final Gson GSON = new Gson(); - private static final String NAME = "replaymod_lang"; + public static final String NAME = "replaymod_lang"; private static final Pattern JSON_FILE_PATTERN = Pattern.compile("^assets/" + ReplayMod.MOD_ID + "/lang/([a-z][a-z])_([a-z][a-z]).json$"); private static final Pattern LANG_FILE_NAME_PATTERN = Pattern.compile("^([a-z][a-z])_([a-z][a-z]).lang$"); @@ -51,9 +57,15 @@ public class LangResourcePack extends AbstractFileResourcePack { private static final String FABRIC_KEY_FORMAT = "key." + ReplayMod.MOD_ID + ".%s"; private final Path basePath; - public LangResourcePack(Path basePath) { + public LangResourcePack() { super(new File(NAME)); - this.basePath = basePath; + + //#if FABRIC>=1 + ModContainer container = FabricLoader.getInstance().getModContainer(ReplayMod.MOD_ID).orElseThrow(IllegalAccessError::new); + this.basePath = container.getRootPath(); + //#else + //$$ this.basePath = null; // stub + //#endif } //#else //$$ public LangResourcePack() { diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java index 0df685db..f6295519 100644 --- a/src/main/java/com/replaymod/core/versions/MCVer.java +++ b/src/main/java/com/replaymod/core/versions/MCVer.java @@ -14,7 +14,7 @@ import net.minecraft.client.model.ModelPart; import net.minecraft.util.crash.CrashReportSection; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; @@ -24,7 +24,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; //#if MC>=11600 -//$$ import net.minecraft.resource.ResourcePackSource; +import net.minecraft.resource.ResourcePackSource; //#endif //#if MC>=11500 @@ -44,9 +44,9 @@ import net.minecraft.client.gui.widget.AbstractButtonWidget; import java.util.concurrent.CompletableFuture; //#if MC>=11600 -//$$ import net.minecraft.text.TranslatableText; +import net.minecraft.text.TranslatableText; //#else -import net.minecraft.client.resource.language.I18n; +//$$ import net.minecraft.client.resource.language.I18n; //#endif //#else //$$ import com.google.common.util.concurrent.FutureCallback; @@ -448,7 +448,7 @@ public class MCVer { return getMinecraft().getResourcePackDownloader().loadServerPack( file //#if MC>=11600 - //$$ , ResourcePackSource.PACK_SOURCE_SERVER + , ResourcePackSource.PACK_SOURCE_SERVER //#endif ); //#else @@ -574,7 +574,7 @@ public class MCVer { public static EntityRenderDispatcher getRenderManager() { //#if MC>=10800 - return getMinecraft().getEntityRenderManager(); + return getMinecraft().getEntityRenderDispatcher(); //#else //$$ return RenderManager.instance; //#endif @@ -613,9 +613,9 @@ public class MCVer { //#if MC>=11400 public static Optional findButton(List buttonList, @SuppressWarnings("unused") String text, @SuppressWarnings("unused") int id) { //#if MC>=11600 - //$$ final TranslatableText message = new TranslatableText(text); + final TranslatableText message = new TranslatableText(text); //#else - final String message = I18n.translate(text); + //$$ final String message = I18n.translate(text); //#endif for (AbstractButtonWidget b : buttonList) { if (message.equals(b.getMessage())) { diff --git a/src/main/java/com/replaymod/extras/HotkeyButtons.java b/src/main/java/com/replaymod/extras/HotkeyButtons.java index 69b0b709..08d37b19 100644 --- a/src/main/java/com/replaymod/extras/HotkeyButtons.java +++ b/src/main/java/com/replaymod/extras/HotkeyButtons.java @@ -74,7 +74,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { final KeyBindingRegistry keyBindingRegistry = mod.getKeyBindingRegistry(); keyBindingRegistry.getKeyBindings().values().stream() - .sorted(Comparator.comparing(it -> I18n.translate(it.getId()))) + .sorted(Comparator.comparing(it -> I18n.translate(it.getTranslationKey()))) .forEachOrdered(keyBinding -> { GuiButton button = new GuiButton(){ @Override @@ -83,10 +83,10 @@ public class HotkeyButtons extends EventRegistrations implements Extra { String keyName = "???"; try { //#if MC>=11600 - //$$ keyName = keyBinding.getBoundKeyLocalizedText().asString(); + keyName = keyBinding.getBoundKeyLocalizedText().asString(); //#else //#if MC>=11400 - keyName = keyBinding.getLocalizedName(); + //$$ keyName = keyBinding.getLocalizedName(); //#else //$$ keyName = Keyboard.getKeyName(keyBinding.getKeyCode()); //#endif @@ -115,7 +115,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { return new Dimension(Math.max(10, button.getMinSize().getWidth()) + 10, 20); } }).addElements(null, button), - new GuiLabel().setI18nText(keyBinding.getId()) + new GuiLabel().setI18nText(keyBinding.getTranslationKey()) )); }); diff --git a/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java b/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java index 61324505..e5b292e3 100644 --- a/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java +++ b/src/main/java/com/replaymod/extras/advancedscreenshots/ScreenshotRenderer.java @@ -7,7 +7,6 @@ import com.replaymod.render.capturer.RenderInfo; import com.replaymod.render.rendering.Pipelines; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; -import lombok.RequiredArgsConstructor; import net.minecraft.client.MinecraftClient; import net.minecraft.util.crash.CrashReport; @@ -22,7 +21,6 @@ import com.replaymod.render.hooks.ChunkLoadingRenderGlobal; import static com.replaymod.core.versions.MCVer.getRenderPartialTicks; -@RequiredArgsConstructor public class ScreenshotRenderer implements RenderInfo { private final MinecraftClient mc = MCVer.getMinecraft(); @@ -31,6 +29,10 @@ public class ScreenshotRenderer implements RenderInfo { private int framesDone; + public ScreenshotRenderer(RenderSettings settings) { + this.settings = settings; + } + public boolean renderScreenshot() throws Throwable { try { //#if MC>=11400 diff --git a/src/main/java/com/replaymod/extras/youtube/GuiYoutubeUpload.java b/src/main/java/com/replaymod/extras/youtube/GuiYoutubeUpload.java index 2de4bd1b..e3097841 100644 --- a/src/main/java/com/replaymod/extras/youtube/GuiYoutubeUpload.java +++ b/src/main/java/com/replaymod/extras/youtube/GuiYoutubeUpload.java @@ -22,7 +22,6 @@ import de.johni0702.minecraft.gui.popup.GuiFileChooserPopup; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; import de.johni0702.minecraft.gui.versions.Image; import joptsimple.internal.Strings; -import lombok.RequiredArgsConstructor; import net.minecraft.client.resource.language.I18n; import org.apache.commons.io.IOUtils; @@ -46,7 +45,6 @@ import java.security.GeneralSecurityException; import static com.replaymod.extras.ReplayModExtras.LOGGER; import static java.util.Arrays.asList; -@RequiredArgsConstructor public class GuiYoutubeUpload extends GuiScreen { private final GuiScreen previousScreen; private final File videoFile; @@ -185,6 +183,13 @@ public class GuiYoutubeUpload extends GuiScreen { inputValidation.run(); } + public GuiYoutubeUpload(GuiScreen previousScreen, File videoFile, int videoFrames, RenderSettings settings) { + this.previousScreen = previousScreen; + this.videoFile = videoFile; + this.videoFrames = videoFrames; + this.settings = settings; + } + private void setState(boolean uploading) { forEach(GuiElement.class).setEnabled(!uploading); uploadButton.setEnabled(); diff --git a/src/main/java/com/replaymod/extras/youtube/YoutubeUploader.java b/src/main/java/com/replaymod/extras/youtube/YoutubeUploader.java index e24f4f4d..1739c676 100644 --- a/src/main/java/com/replaymod/extras/youtube/YoutubeUploader.java +++ b/src/main/java/com/replaymod/extras/youtube/YoutubeUploader.java @@ -26,8 +26,7 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import com.replaymod.render.RenderSettings; import com.replaymod.render.metadata.MetadataInjector; -import lombok.Getter; -import lombok.NonNull; +import de.johni0702.minecraft.gui.utils.NonNull; import net.minecraft.client.MinecraftClient; import org.apache.commons.exec.CommandLine; import org.apache.commons.io.FileUtils; @@ -60,10 +59,8 @@ public class YoutubeUploader { @NonNull private Supplier progress = Suppliers.ofInstance(0d); - @Getter private State state; - @Getter private volatile boolean cancelled; public YoutubeUploader(MinecraftClient minecraft, File videoFile, int videoFrames, @@ -252,6 +249,14 @@ public class YoutubeUploader { return progress.get(); } + public State getState() { + return this.state; + } + + public boolean isCancelled() { + return this.cancelled; + } + public enum State { AUTH, PREPARE_VIDEO, UPLOAD, CLEANUP } diff --git a/src/main/java/com/replaymod/pathing/player/ReplayTimer.java b/src/main/java/com/replaymod/pathing/player/ReplayTimer.java index e66d784b..30d5f462 100644 --- a/src/main/java/com/replaymod/pathing/player/ReplayTimer.java +++ b/src/main/java/com/replaymod/pathing/player/ReplayTimer.java @@ -15,7 +15,7 @@ public class ReplayTimer extends WrappedTimer { //#endif //#if MC>=11600 - //$$ public int ticksThisFrame; + public int ticksThisFrame; //#endif public ReplayTimer(RenderTickCounter wrapped) { @@ -27,9 +27,9 @@ public class ReplayTimer extends WrappedTimer { //#if MC>=11400 public //#if MC>=11600 - //$$ int + int //#else - void + //$$ void //#endif beginRenderTick( //#else @@ -42,7 +42,7 @@ public class ReplayTimer extends WrappedTimer { copy(this, state); // Save our current state try { //#if MC>=11600 - //$$ ticksThisFrame = + ticksThisFrame = //#endif wrapped.beginRenderTick( //#if MC>=11400 @@ -54,7 +54,7 @@ public class ReplayTimer extends WrappedTimer { UpdatedCallback.EVENT.invoker().onUpdate(); } //#if MC>=11600 - //$$ return ticksThisFrame; + return ticksThisFrame; //#endif } diff --git a/src/main/java/com/replaymod/pathing/properties/CameraProperties.java b/src/main/java/com/replaymod/pathing/properties/CameraProperties.java index cf427cc0..19e42b31 100644 --- a/src/main/java/com/replaymod/pathing/properties/CameraProperties.java +++ b/src/main/java/com/replaymod/pathing/properties/CameraProperties.java @@ -9,7 +9,7 @@ import com.replaymod.replaystudio.pathing.property.AbstractProperty; import com.replaymod.replaystudio.pathing.property.AbstractPropertyGroup; import com.replaymod.replaystudio.pathing.property.PropertyPart; import com.replaymod.replaystudio.pathing.property.PropertyParts; -import lombok.NonNull; +import de.johni0702.minecraft.gui.utils.NonNull; import org.apache.commons.lang3.tuple.Triple; import java.io.IOException; diff --git a/src/main/java/com/replaymod/pathing/properties/TimestampProperty.java b/src/main/java/com/replaymod/pathing/properties/TimestampProperty.java index 3e43f586..24d09770 100644 --- a/src/main/java/com/replaymod/pathing/properties/TimestampProperty.java +++ b/src/main/java/com/replaymod/pathing/properties/TimestampProperty.java @@ -7,7 +7,7 @@ import com.replaymod.replay.ReplaySender; import com.replaymod.replaystudio.pathing.property.AbstractProperty; import com.replaymod.replaystudio.pathing.property.PropertyPart; import com.replaymod.replaystudio.pathing.property.PropertyParts; -import lombok.NonNull; +import de.johni0702.minecraft.gui.utils.NonNull; import java.io.IOException; import java.util.Collection; diff --git a/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java b/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java index b015712e..f2e1b73f 100644 --- a/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java +++ b/src/main/java/com/replaymod/recording/gui/GuiRecordingOverlay.java @@ -56,7 +56,7 @@ public class GuiRecordingOverlay extends EventRegistrations { String text = guiControls.isPaused() ? I18n.translate("replaymod.gui.paused") : I18n.translate("replaymod.gui.recording"); fontRenderer.draw( //#if MC>=11600 - //$$ stack, + stack, //#endif text.toUpperCase(), 30, 18 - (fontRenderer.fontHeight / 2), 0xffffffff); bindTexture(TEXTURE); diff --git a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java index cb8c3db6..cd09a29b 100644 --- a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java @@ -19,14 +19,14 @@ import net.minecraft.network.ClientConnection; import org.apache.logging.log4j.Logger; //#if MC>=11600 -//$$ import net.minecraft.world.World; +import net.minecraft.world.World; //#else //#if MC>=11400 -import net.minecraft.world.dimension.DimensionType; +//$$ import net.minecraft.world.dimension.DimensionType; //#endif - +//$$ //#if MC>=10800 -import net.minecraft.world.level.LevelGeneratorType; +//$$ import net.minecraft.world.level.LevelGeneratorType; //#endif //#endif @@ -65,10 +65,10 @@ public class ConnectionEventHandler { if (local) { //#if MC>=10800 //#if MC>=11600 - //$$ if (mc.getServer().getWorld(World.OVERWORLD).isDebugWorld()) { + if (mc.getServer().getWorld(World.OVERWORLD).isDebugWorld()) { //#else //#if MC>=11400 - if (mc.getServer().getWorld(DimensionType.OVERWORLD).getGeneratorType() == LevelGeneratorType.DEBUG_ALL_BLOCK_STATES) { + //$$ if (mc.getServer().getWorld(DimensionType.OVERWORLD).getGeneratorType() == LevelGeneratorType.DEBUG_ALL_BLOCK_STATES) { //#else //$$ if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType.DEBUG_ALL_BLOCK_STATES) { //#endif @@ -91,9 +91,9 @@ public class ConnectionEventHandler { String worldName; if (local) { //#if MC>=11600 - //$$ worldName = mc.getServer().getSaveProperties().getLevelName(); + worldName = mc.getServer().getSaveProperties().getLevelName(); //#else - worldName = mc.getServer().getLevelName(); + //$$ worldName = mc.getServer().getLevelName(); //#endif } else if (mc.getCurrentServerEntry() != null) { worldName = mc.getCurrentServerEntry().address; diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java index a1996d90..7894fef8 100644 --- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java @@ -32,8 +32,8 @@ import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; //#endif //#if MC>=11600 -//$$ import com.mojang.datafixers.util.Pair; -//$$ import java.util.Collections; +import com.mojang.datafixers.util.Pair; +import java.util.Collections; //#endif //#if MC>=11400 @@ -210,10 +210,10 @@ public class RecordingEventHandler extends EventRegistrations { //#endif newYaw, newPitch //#if MC>=11600 - //$$ , player.isOnGround() + , player.isOnGround() //#else //#if MC>=10800 - , player.onGround + //$$ , player.onGround //#endif //#endif ); @@ -239,7 +239,7 @@ public class RecordingEventHandler extends EventRegistrations { //Animation Packets //Swing Animation - if (player.isHandSwinging && player.handSwingTicks == 0) { + if (player.handSwinging && player.handSwingTicks == 0) { packetListener.save(new EntityAnimationS2CPacket( player, //#if MC>=10904 @@ -277,9 +277,9 @@ public class RecordingEventHandler extends EventRegistrations { if (playerItems[slot.ordinal()] != stack) { playerItems[slot.ordinal()] = stack; //#if MC>=11600 - //$$ packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), Collections.singletonList(Pair.of(slot, stack)))); + packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), Collections.singletonList(Pair.of(slot, stack)))); //#else - packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), slot, stack)); + //$$ packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), slot, stack)); //#endif } } diff --git a/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java b/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java index 2d35c050..8a581096 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.At; import java.io.File; //#if MC>=11600 -//$$ import net.minecraft.resource.ResourcePackSource; +import net.minecraft.resource.ResourcePackSource; //#endif //#if MC>=10800 @@ -37,7 +37,7 @@ public abstract class MixinDownloadingPackFinder implements ResourcePackRecorder private void recordDownloadedPack( File file, //#if MC>=11600 - //$$ ResourcePackSource arg, + ResourcePackSource arg, //#endif CallbackInfoReturnable ci ) { diff --git a/src/main/java/com/replaymod/recording/mixin/MixinMouseHelper.java b/src/main/java/com/replaymod/recording/mixin/MixinMouseHelper.java index 2fb4e40c..01e9572f 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinMouseHelper.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinMouseHelper.java @@ -14,13 +14,13 @@ import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(Mouse.class) public abstract class MixinMouseHelper { @Shadow - private boolean isCursorLocked; + private boolean cursorLocked; @Inject(method = "lockCursor", at = @At("HEAD"), cancellable = true) private void noGrab(CallbackInfo ci) { // Used to be provided by Forge for 1.12.2 and below if (Boolean.valueOf(System.getProperty("fml.noGrab", "false"))) { - this.isCursorLocked = true; + this.cursorLocked = true; ci.cancel(); } } diff --git a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java index f739ce52..2212424c 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java @@ -17,7 +17,7 @@ import com.replaymod.replaystudio.protocol.PacketType; import com.replaymod.replaystudio.protocol.packets.PacketPlayerListEntry; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; import net.minecraft.client.network.PlayerListEntry; diff --git a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java index 29ae5cba..e5c79889 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java @@ -17,17 +17,17 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //#if MC>=11600 -//$$ import net.minecraft.util.registry.RegistryKey; -//$$ import net.minecraft.world.MutableWorldProperties; -//$$ import java.util.function.Supplier; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.MutableWorldProperties; +import java.util.function.Supplier; //#else -import net.minecraft.world.level.LevelProperties; +//$$ import net.minecraft.world.level.LevelProperties; //#endif //#if MC>=11400 import net.minecraft.world.chunk.ChunkManager; //#if MC<11600 -import net.minecraft.world.dimension.Dimension; +//$$ import net.minecraft.world.dimension.Dimension; //#endif import net.minecraft.world.dimension.DimensionType; import java.util.function.BiFunction; @@ -48,22 +48,22 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa private MinecraftClient client; //#if MC>=11600 - //$$ protected MixinWorldClient(MutableWorldProperties mutableWorldProperties, RegistryKey registryKey, + protected MixinWorldClient(MutableWorldProperties mutableWorldProperties, RegistryKey registryKey, //#if MC<11602 //$$ RegistryKey registryKey2, //#endif - //$$ DimensionType dimensionType, Supplier profiler, boolean bl, boolean bl2, long l) { - //$$ super(mutableWorldProperties, registryKey, + DimensionType dimensionType, Supplier profiler, boolean bl, boolean bl2, long l) { + super(mutableWorldProperties, registryKey, //#if MC<11602 //$$ registryKey2, //#endif - //$$ dimensionType, profiler, bl, bl2, l); - //$$ } + dimensionType, profiler, bl, bl2, l); + } //#else //#if MC>=11400 - protected MixinWorldClient(LevelProperties levelProperties_1, DimensionType dimensionType_1, BiFunction biFunction_1, Profiler profiler_1, boolean boolean_1) { - super(levelProperties_1, dimensionType_1, biFunction_1, profiler_1, boolean_1); - } + //$$ protected MixinWorldClient(LevelProperties levelProperties_1, DimensionType dimensionType_1, BiFunction biFunction_1, Profiler profiler_1, boolean boolean_1) { + //$$ super(levelProperties_1, dimensionType_1, biFunction_1, profiler_1, boolean_1); + //$$ } //#else //$$ protected MixinWorldClient(ISaveHandler saveHandlerIn, //#if MC>=11400 @@ -118,9 +118,9 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa // Same goes for level events (also called effects). E.g. door open, block break, etc. //#if MC>=11400 //#if MC>=11600 - //$$ @Inject(method = "syncWorldEvent", at = @At("HEAD")) + @Inject(method = "syncWorldEvent", at = @At("HEAD")) //#else - @Inject(method = "playLevelEvent", at = @At("HEAD")) + //$$ @Inject(method = "playLevelEvent", at = @At("HEAD")) //#endif private void playLevelEvent (PlayerEntity player, int type, BlockPos pos, int data, CallbackInfo ci) { //#else diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index f0ef899b..ba1d5ad0 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -36,7 +36,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.data.DataTracker; import net.minecraft.network.NetworkState; import net.minecraft.network.Packet; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import net.minecraft.text.LiteralText; import net.minecraft.util.crash.CrashReport; import org.apache.logging.log4j.LogManager; diff --git a/src/main/java/com/replaymod/render/RenderSettings.java b/src/main/java/com/replaymod/render/RenderSettings.java index 529732d3..c39f50b2 100644 --- a/src/main/java/com/replaymod/render/RenderSettings.java +++ b/src/main/java/com/replaymod/render/RenderSettings.java @@ -3,9 +3,6 @@ package com.replaymod.render; import com.google.gson.annotations.SerializedName; import com.replaymod.core.versions.MCVer; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableColor; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; import net.minecraft.client.resource.language.I18n; import net.minecraft.util.Util; @@ -26,7 +23,6 @@ import org.apache.maven.artifact.versioning.ComparableVersion; //#endif //#endif -@Data public class RenderSettings { public enum RenderMethod { DEFAULT, STEREOSCOPIC, CUBIC, EQUIRECTANGULAR, ODS, BLEND; @@ -119,13 +115,19 @@ public class RenderSettings { } } - @AllArgsConstructor public enum AntiAliasing { NONE(1), X2(2), X4(4), X8(8); - @Getter private final int factor; + AntiAliasing(int factor) { + this.factor = factor; + } + + public int getFactor() { + return factor; + } + @Override public String toString() { return I18n.translate("replaymod.gui.rendersettings.antialiasing." + name().toLowerCase()); @@ -162,6 +164,48 @@ public class RenderSettings { private final boolean highPerformance; + public RenderSettings( + RenderMethod renderMethod, + EncodingPreset encodingPreset, + int videoWidth, + int videoHeight, + int framesPerSecond, + int bitRate, + File outputFile, + boolean renderNameTags, + boolean stabilizeYaw, + boolean stabilizePitch, + boolean stabilizeRoll, + ReadableColor chromaKeyingColor, + int sphericalFovX, + int sphericalFovY, + boolean injectSphericalMetadata, + AntiAliasing antiAliasing, + String exportCommand, + String exportArguments, + boolean highPerformance + ) { + this.renderMethod = renderMethod; + this.encodingPreset = encodingPreset; + this.videoWidth = videoWidth; + this.videoHeight = videoHeight; + this.framesPerSecond = framesPerSecond; + this.bitRate = bitRate; + this.outputFile = outputFile; + this.renderNameTags = renderNameTags; + this.stabilizeYaw = stabilizeYaw; + this.stabilizePitch = stabilizePitch; + this.stabilizeRoll = stabilizeRoll; + this.chromaKeyingColor = chromaKeyingColor; + this.sphericalFovX = sphericalFovX; + this.sphericalFovY = sphericalFovY; + this.injectSphericalMetadata = injectSphericalMetadata; + this.antiAliasing = antiAliasing; + this.exportCommand = exportCommand; + this.exportArguments = exportArguments; + this.highPerformance = highPerformance; + } + /** * @return the width of the output video during rendering, including the upscale for Anti-Aliasing. */ @@ -253,4 +297,71 @@ public class RenderSettings { return "ffmpeg"; } + public RenderMethod getRenderMethod() { + return renderMethod; + } + + public EncodingPreset getEncodingPreset() { + return encodingPreset; + } + + public int getFramesPerSecond() { + return framesPerSecond; + } + + public int getBitRate() { + return bitRate; + } + + public File getOutputFile() { + return outputFile; + } + + public boolean isRenderNameTags() { + return renderNameTags; + } + + public boolean isStabilizeYaw() { + return stabilizeYaw; + } + + public boolean isStabilizePitch() { + return stabilizePitch; + } + + public boolean isStabilizeRoll() { + return stabilizeRoll; + } + + public ReadableColor getChromaKeyingColor() { + return chromaKeyingColor; + } + + public int getSphericalFovX() { + return sphericalFovX; + } + + public int getSphericalFovY() { + return sphericalFovY; + } + + public boolean isInjectSphericalMetadata() { + return injectSphericalMetadata; + } + + public AntiAliasing getAntiAliasing() { + return antiAliasing; + } + + public String getExportCommand() { + return exportCommand; + } + + public String getExportArguments() { + return exportArguments; + } + + public boolean isHighPerformance() { + return highPerformance; + } } diff --git a/src/main/java/com/replaymod/render/blend/Util.java b/src/main/java/com/replaymod/render/blend/Util.java index 89197bd1..d47092e7 100644 --- a/src/main/java/com/replaymod/render/blend/Util.java +++ b/src/main/java/com/replaymod/render/blend/Util.java @@ -140,7 +140,7 @@ public class Util { public static Vector3f getCameraPos() { MinecraftClient mc = MinecraftClient.getInstance(); //#if MC>=11400 - Vec3d pos = mc.getEntityRenderManager().camera.getPos(); + Vec3d pos = mc.getEntityRenderDispatcher().camera.getPos(); return new Vector3f((float) pos.x, (float) pos.y, (float) pos.z); //#else //$$ return new Vector3f( diff --git a/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java b/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java index 84608cfc..0fd15a81 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java @@ -52,9 +52,9 @@ public class TileEntityExporter implements Exporter { // so we position it at 0/0/0 and instead have the tile entities themselves move more Matrix4f.translate(new Vector3f( //#if MC>=11400 - (float) -mc.getEntityRenderManager().camera.getPos().x, - (float) -mc.getEntityRenderManager().camera.getPos().y, - (float) -mc.getEntityRenderManager().camera.getPos().z + (float) -mc.getEntityRenderDispatcher().camera.getPos().x, + (float) -mc.getEntityRenderDispatcher().camera.getPos().y, + (float) -mc.getEntityRenderDispatcher().camera.getPos().z //#else //$$ (float) -mc.getRenderManager().viewerPosX, //$$ (float) -mc.getRenderManager().viewerPosY, diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderLivingBase.java b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderLivingBase.java index acbd7f11..04efa633 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderLivingBase.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderLivingBase.java @@ -21,7 +21,7 @@ import net.minecraft.client.render.entity.LivingEntityRenderer; //#endif public abstract class MixinRenderLivingBase { //#if MC>=11500 - @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At( + @Inject(method = "render", at = @At( //#else //#if FABRIC>=1 //$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At( diff --git a/src/main/java/com/replaymod/render/frame/CubicOpenGlFrame.java b/src/main/java/com/replaymod/render/frame/CubicOpenGlFrame.java index 217e4849..8b09c384 100644 --- a/src/main/java/com/replaymod/render/frame/CubicOpenGlFrame.java +++ b/src/main/java/com/replaymod/render/frame/CubicOpenGlFrame.java @@ -1,11 +1,9 @@ package com.replaymod.render.frame; import com.replaymod.render.rendering.Frame; -import lombok.Getter; import org.apache.commons.lang3.Validate; public class CubicOpenGlFrame implements Frame { - @Getter private final OpenGlFrame left, right, front, back, top, bottom; public CubicOpenGlFrame(OpenGlFrame left, OpenGlFrame right, OpenGlFrame front, OpenGlFrame back, OpenGlFrame top, OpenGlFrame bottom) { @@ -31,4 +29,28 @@ public class CubicOpenGlFrame implements Frame { public int getFrameId() { return left.getFrameId(); } + + public OpenGlFrame getLeft() { + return this.left; + } + + public OpenGlFrame getRight() { + return this.right; + } + + public OpenGlFrame getFront() { + return this.front; + } + + public OpenGlFrame getBack() { + return this.back; + } + + public OpenGlFrame getTop() { + return this.top; + } + + public OpenGlFrame getBottom() { + return this.bottom; + } } diff --git a/src/main/java/com/replaymod/render/frame/ODSOpenGlFrame.java b/src/main/java/com/replaymod/render/frame/ODSOpenGlFrame.java index 1a595fe8..428138b7 100644 --- a/src/main/java/com/replaymod/render/frame/ODSOpenGlFrame.java +++ b/src/main/java/com/replaymod/render/frame/ODSOpenGlFrame.java @@ -1,11 +1,9 @@ package com.replaymod.render.frame; import com.replaymod.render.rendering.Frame; -import lombok.Getter; import org.apache.commons.lang3.Validate; public class ODSOpenGlFrame implements Frame { - @Getter private final CubicOpenGlFrame left, right; public ODSOpenGlFrame(CubicOpenGlFrame left, CubicOpenGlFrame right) { @@ -18,4 +16,12 @@ public class ODSOpenGlFrame implements Frame { public int getFrameId() { return left.getFrameId(); } + + public CubicOpenGlFrame getLeft() { + return this.left; + } + + public CubicOpenGlFrame getRight() { + return this.right; + } } diff --git a/src/main/java/com/replaymod/render/frame/OpenGlFrame.java b/src/main/java/com/replaymod/render/frame/OpenGlFrame.java index 82d40770..b2762eb7 100644 --- a/src/main/java/com/replaymod/render/frame/OpenGlFrame.java +++ b/src/main/java/com/replaymod/render/frame/OpenGlFrame.java @@ -2,19 +2,31 @@ package com.replaymod.render.frame; import com.replaymod.render.rendering.Frame; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; -import lombok.Getter; -import lombok.RequiredArgsConstructor; import java.nio.ByteBuffer; -@RequiredArgsConstructor public class OpenGlFrame implements Frame { - @Getter private final int frameId; - @Getter private final ReadableDimension size; - @Getter private final ByteBuffer byteBuffer; + + public OpenGlFrame(int frameId, ReadableDimension size, ByteBuffer byteBuffer) { + this.frameId = frameId; + this.size = size; + this.byteBuffer = byteBuffer; + } + + public int getFrameId() { + return this.frameId; + } + + public ReadableDimension getSize() { + return this.size; + } + + public ByteBuffer getByteBuffer() { + return this.byteBuffer; + } } diff --git a/src/main/java/com/replaymod/render/frame/RGBFrame.java b/src/main/java/com/replaymod/render/frame/RGBFrame.java index c0c0eb07..9c6e284e 100644 --- a/src/main/java/com/replaymod/render/frame/RGBFrame.java +++ b/src/main/java/com/replaymod/render/frame/RGBFrame.java @@ -2,19 +2,15 @@ package com.replaymod.render.frame; import com.replaymod.render.rendering.Frame; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; -import lombok.Getter; import org.apache.commons.lang3.Validate; import java.nio.ByteBuffer; public class RGBFrame implements Frame { - @Getter private final int frameId; - @Getter private final ReadableDimension size; - @Getter private final ByteBuffer byteBuffer; public RGBFrame(int frameId, ReadableDimension size, ByteBuffer byteBuffer) { @@ -25,4 +21,16 @@ public class RGBFrame implements Frame { this.size = size; this.byteBuffer = byteBuffer; } + + public int getFrameId() { + return this.frameId; + } + + public ReadableDimension getSize() { + return this.size; + } + + public ByteBuffer getByteBuffer() { + return this.byteBuffer; + } } diff --git a/src/main/java/com/replaymod/render/frame/StereoscopicOpenGlFrame.java b/src/main/java/com/replaymod/render/frame/StereoscopicOpenGlFrame.java index 39eb0432..8e35854e 100644 --- a/src/main/java/com/replaymod/render/frame/StereoscopicOpenGlFrame.java +++ b/src/main/java/com/replaymod/render/frame/StereoscopicOpenGlFrame.java @@ -1,11 +1,9 @@ package com.replaymod.render.frame; import com.replaymod.render.rendering.Frame; -import lombok.Getter; import org.apache.commons.lang3.Validate; public class StereoscopicOpenGlFrame implements Frame { - @Getter private final OpenGlFrame left, right; public StereoscopicOpenGlFrame(OpenGlFrame left, OpenGlFrame right) { @@ -19,4 +17,12 @@ public class StereoscopicOpenGlFrame implements Frame { public int getFrameId() { return left.getFrameId(); } + + public OpenGlFrame getLeft() { + return this.left; + } + + public OpenGlFrame getRight() { + return this.right; + } } diff --git a/src/main/java/com/replaymod/render/gui/GuiRenderingDone.java b/src/main/java/com/replaymod/render/gui/GuiRenderingDone.java index 0b209231..823d2ddf 100644 --- a/src/main/java/com/replaymod/render/gui/GuiRenderingDone.java +++ b/src/main/java/com/replaymod/render/gui/GuiRenderingDone.java @@ -13,11 +13,9 @@ import de.johni0702.minecraft.gui.element.GuiLabel; import de.johni0702.minecraft.gui.layout.CustomLayout; import de.johni0702.minecraft.gui.layout.HorizontalLayout; import de.johni0702.minecraft.gui.layout.VerticalLayout; -import lombok.RequiredArgsConstructor; import java.io.File; -@RequiredArgsConstructor public class GuiRenderingDone extends GuiScreen { public final ReplayModRender mod; public final File videoFile; @@ -72,6 +70,13 @@ public class GuiRenderingDone extends GuiScreen { setBackground(Background.DIRT); } + public GuiRenderingDone(ReplayModRender mod, File videoFile, int videoFrames, RenderSettings settings) { + this.mod = mod; + this.videoFile = videoFile; + this.videoFrames = videoFrames; + this.settings = settings; + } + @Override public void display() { if (mod.getCore().getSettingsRegistry().get(Setting.SKIP_POST_RENDER_GUI)) { diff --git a/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java b/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java index 3b2b2cdd..a916e893 100644 --- a/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java +++ b/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java @@ -289,7 +289,7 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable { buffer.get(); // alpha //#if MC>=11400 int value = 0xff << 24 | b << 16 | g << 8 | r; - data.setPixelRgba(x, y, value); // actually takes ABGR, not RGBA + data.setPixelColor(x, y, value); // actually takes ABGR, not RGBA //#else //$$ int value = 0xff << 24 | r << 16 | g << 8 | b; //$$ data[y * width + x] = value; diff --git a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java index de08ec2c..dba61c99 100644 --- a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java +++ b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java @@ -6,7 +6,6 @@ import com.replaymod.render.capturer.CaptureData; import com.replaymod.render.capturer.RenderInfo; import com.replaymod.render.capturer.WorldRenderer; import de.johni0702.minecraft.gui.utils.EventRegistrations; -import lombok.Getter; import net.minecraft.client.MinecraftClient; //#if MC>=11500 @@ -30,10 +29,8 @@ import java.io.IOException; public class EntityRendererHandler extends EventRegistrations implements WorldRenderer { public final MinecraftClient mc = MCVer.getMinecraft(); - @Getter protected final RenderSettings settings; - @Getter private final RenderInfo renderInfo; public CaptureData data; @@ -99,6 +96,14 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe this.omnidirectional = omnidirectional; } + public RenderSettings getSettings() { + return this.settings; + } + + public RenderInfo getRenderInfo() { + return this.renderInfo; + } + public interface IEntityRenderer { void replayModRender_setHandler(EntityRendererHandler handler); EntityRendererHandler replayModRender_getHandler(); diff --git a/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java b/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java index 503bde6a..ea84b39f 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java +++ b/src/main/java/com/replaymod/render/mixin/MixinEntityRenderer.java @@ -26,7 +26,7 @@ import net.minecraft.util.hit.HitResult; //#if MC>=11400 import net.minecraft.client.options.GameOptions; import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.util.math.Matrix4f; +import net.minecraft.util.math.Matrix4f; import net.minecraft.client.render.WorldRenderer; //#else //$$ import com.replaymod.replay.camera.CameraEntity; @@ -217,7 +217,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti */ //#if MC>=11400 - @Redirect(method = "method_22973", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;viewboxMatrix(DFFF)Lnet/minecraft/client/util/math/Matrix4f;")) + @Redirect(method = "method_22973", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Matrix4f;viewboxMatrix(DFFF)Lnet/minecraft/util/math/Matrix4f;")) private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) { return replayModRender_perspective((float) fovY, aspect, zNear, zFar); } diff --git a/src/main/java/com/replaymod/render/mixin/MixinParticleManager.java b/src/main/java/com/replaymod/render/mixin/MixinParticleManager.java index bcc41c16..456dceac 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinParticleManager.java +++ b/src/main/java/com/replaymod/render/mixin/MixinParticleManager.java @@ -46,7 +46,7 @@ public abstract class MixinParticleManager { buildGeometry(particle, vertexConsumer, camera, partialTicks); } finally { - rotation.set(org.getA(), org.getB(), org.getC(), org.getD()); + rotation.set(org.getW(), org.getX(), org.getY(), org.getZ()); } } } diff --git a/src/main/java/com/replaymod/render/processor/EquirectangularToRGBProcessor.java b/src/main/java/com/replaymod/render/processor/EquirectangularToRGBProcessor.java index c50ccc84..b0e4cf2e 100644 --- a/src/main/java/com/replaymod/render/processor/EquirectangularToRGBProcessor.java +++ b/src/main/java/com/replaymod/render/processor/EquirectangularToRGBProcessor.java @@ -4,7 +4,6 @@ import com.replaymod.render.frame.CubicOpenGlFrame; import com.replaymod.render.frame.RGBFrame; import com.replaymod.render.utils.ByteBufferPool; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; -import lombok.Getter; import org.apache.commons.lang3.Validate; import java.nio.ByteBuffer; @@ -19,7 +18,6 @@ public class EquirectangularToRGBProcessor extends AbstractFrameProcessor implements Runnable { abort = true; } - @RequiredArgsConstructor private class ProcessTask implements Runnable { private final R rawFrame; + public ProcessTask(R rawFrame) { + this.rawFrame = rawFrame; + } + @Override public void run() { try { diff --git a/src/main/java/com/replaymod/render/rendering/Pipelines.java b/src/main/java/com/replaymod/render/rendering/Pipelines.java index 89b0585b..51437bfb 100644 --- a/src/main/java/com/replaymod/render/rendering/Pipelines.java +++ b/src/main/java/com/replaymod/render/rendering/Pipelines.java @@ -23,11 +23,7 @@ import com.replaymod.render.processor.ODSToRGBProcessor; import com.replaymod.render.processor.OpenGlToRGBProcessor; import com.replaymod.render.processor.StereoscopicToRGBProcessor; import com.replaymod.render.utils.PixelBufferObject; -import lombok.experimental.UtilityClass; -import java.io.IOException; - -@UtilityClass public class Pipelines { public static Pipeline newPipeline(RenderSettings.RenderMethod method, RenderInfo renderInfo, FrameConsumer consumer) { switch (method) { diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java index 34799f86..1e1481a1 100644 --- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java +++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java @@ -33,7 +33,7 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.client.render.RenderTickCounter; //#if MC>=11600 -//$$ import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.MatrixStack; //#endif //#if MC>=11500 @@ -167,7 +167,7 @@ public class VideoRenderer implements RenderInfo { //#endif while (replayTime < videoStart) { //#if MC<11600 - timer.ticksThisFrame = 1; + //$$ timer.ticksThisFrame = 1; //#endif replayTime += 50; replayHandler.getReplaySender().sendPacketsTill(replayTime); @@ -235,7 +235,7 @@ public class VideoRenderer implements RenderInfo { // Updating the timer will cause the timeline player to update the game state RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer(); //#if MC>=11600 - //$$ int elapsedTicks = + int elapsedTicks = //#endif timer.beginRenderTick( //#if MC>=11400 @@ -243,7 +243,7 @@ public class VideoRenderer implements RenderInfo { //#endif ); //#if MC<11600 - int elapsedTicks = timer.ticksThisFrame; + //$$ int elapsedTicks = timer.ticksThisFrame; //#endif executeTaskQueue(); @@ -541,7 +541,7 @@ public class VideoRenderer implements RenderInfo { mc.currentScreen = gui.toMinecraft(); mc.overlay.render( //#if MC>=11600 - //$$ new MatrixStack(), + new MatrixStack(), //#endif mouseX, mouseY, 0); } finally { @@ -551,7 +551,7 @@ public class VideoRenderer implements RenderInfo { gui.toMinecraft().tick(); gui.toMinecraft().render( //#if MC>=11600 - //$$ new MatrixStack(), + new MatrixStack(), //#endif mouseX, mouseY, 0); } diff --git a/src/main/java/com/replaymod/render/utils/PixelBufferObject.java b/src/main/java/com/replaymod/render/utils/PixelBufferObject.java index 6f83f77a..0a1e0a93 100644 --- a/src/main/java/com/replaymod/render/utils/PixelBufferObject.java +++ b/src/main/java/com/replaymod/render/utils/PixelBufferObject.java @@ -2,7 +2,6 @@ package com.replaymod.render.utils; import com.google.common.base.Objects; import com.replaymod.core.ReplayMod; -import lombok.RequiredArgsConstructor; import org.apache.logging.log4j.LogManager; //#if MC>=11400 @@ -25,13 +24,17 @@ import static org.lwjgl.opengl.ARBVertexBufferObject.*; //#endif public class PixelBufferObject { - @RequiredArgsConstructor public enum Usage { COPY(GL_STREAM_COPY_ARB, GL_STREAM_COPY), DRAW(GL_STREAM_DRAW_ARB, GL_STREAM_DRAW), READ(GL_STREAM_READ_ARB, GL_STREAM_READ); private final int arb, gl15; + + Usage(int arb, int gl15) { + this.arb = arb; + this.gl15 = gl15; + } } //#if MC>=11400 diff --git a/src/main/java/com/replaymod/render/utils/RenderJob.java b/src/main/java/com/replaymod/render/utils/RenderJob.java index bae927d0..381cc35e 100644 --- a/src/main/java/com/replaymod/render/utils/RenderJob.java +++ b/src/main/java/com/replaymod/render/utils/RenderJob.java @@ -2,11 +2,62 @@ package com.replaymod.render.utils; import com.replaymod.render.RenderSettings; import com.replaymod.replaystudio.pathing.path.Timeline; -import lombok.Data; -@Data +import java.util.Objects; + public class RenderJob { private String name; private Timeline timeline; private RenderSettings settings; + + public RenderJob() { + } + + public String getName() { + return this.name; + } + + public Timeline getTimeline() { + return this.timeline; + } + + public RenderSettings getSettings() { + return this.settings; + } + + public void setName(String name) { + this.name = name; + } + + public void setTimeline(Timeline timeline) { + this.timeline = timeline; + } + + public void setSettings(RenderSettings settings) { + this.settings = settings; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RenderJob renderJob = (RenderJob) o; + return name.equals(renderJob.name) && + timeline.equals(renderJob.timeline) && + settings.equals(renderJob.settings); + } + + @Override + public int hashCode() { + return Objects.hash(name, timeline, settings); + } + + @Override + public String toString() { + return "RenderJob{" + + "name='" + name + '\'' + + ", timeline=" + timeline + + ", settings=" + settings + + '}'; + } } diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index fb2c13ec..39dd697e 100644 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -27,8 +27,8 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.NetworkState; import net.minecraft.network.Packet; -import net.minecraft.util.PacketByteBuf; -import net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket; import net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket; @@ -37,10 +37,10 @@ import net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ExperienceOrbSpawnS2CPacket; import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket; import net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket; -import net.minecraft.network.packet.s2c.play.CloseContainerS2CPacket; -import net.minecraft.network.packet.s2c.play.OpenHorseContainerS2CPacket; -import net.minecraft.network.packet.s2c.play.ContainerSlotUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.ContainerPropertyUpdateS2CPacket; +import net.minecraft.network.packet.s2c.play.CloseScreenS2CPacket; +import net.minecraft.network.packet.s2c.play.OpenHorseScreenS2CPacket; +import net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket; +import net.minecraft.network.packet.s2c.play.ScreenHandlerPropertyUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket; import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket; import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; @@ -66,14 +66,14 @@ import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; //#if MC>=11600 //#else -import net.minecraft.network.packet.s2c.play.EntitySpawnGlobalS2CPacket; +//$$ import net.minecraft.network.packet.s2c.play.EntitySpawnGlobalS2CPacket; //#endif //#if MC>=11400 import com.replaymod.core.versions.MCVer; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket; -import net.minecraft.network.packet.s2c.play.OpenContainerS2CPacket; +import net.minecraft.network.packet.s2c.play.OpenScreenS2CPacket; import net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket; import net.minecraft.entity.EntityType; import net.minecraft.text.TranslatableText; @@ -150,7 +150,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //#endif //#if MC>=11400 OpenWrittenBookS2CPacket.class, - OpenContainerS2CPacket.class, + OpenScreenS2CPacket.class, //#endif //#if MC>=11200 SynchronizeRecipesS2CPacket.class, @@ -162,10 +162,10 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend TitleS2CPacket.class, //#endif HealthUpdateS2CPacket.class, - OpenHorseContainerS2CPacket.class, - CloseContainerS2CPacket.class, - ContainerSlotUpdateS2CPacket.class, - ContainerPropertyUpdateS2CPacket.class, + OpenHorseScreenS2CPacket.class, + CloseScreenS2CPacket.class, + ScreenHandlerSlotUpdateS2CPacket.class, + ScreenHandlerPropertyUpdateS2CPacket.class, SignEditorOpenS2CPacket.class, StatisticsS2CPacket.class, ExperienceBarUpdateS2CPacket.class, @@ -427,7 +427,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend || p instanceof EntitySpawnS2CPacket || p instanceof MobSpawnS2CPacket //#if MC<11600 - || p instanceof EntitySpawnGlobalS2CPacket + //$$ || p instanceof EntitySpawnGlobalS2CPacket //#endif || p instanceof PaintingSpawnS2CPacket || p instanceof ExperienceOrbSpawnS2CPacket @@ -617,27 +617,27 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend entId, GameMode.SPECTATOR, //#if MC>=11600 - //$$ GameMode.SPECTATOR, + GameMode.SPECTATOR, //#endif //#if MC>=11500 - packet.getSeed(), + packet.getSha256Seed(), //#endif false, //#if MC>=11600 - //$$ packet.method_29443(), + packet.method_29443(), //#if MC>=11602 - //$$ (net.minecraft.util.registry.DynamicRegistryManager.Impl) packet.getRegistryManager(), + (net.minecraft.util.registry.DynamicRegistryManager.Impl) packet.getRegistryManager(), //#else //$$ (net.minecraft.util.registry.RegistryTracker.Modifiable) packet.getDimension(), //#endif - //$$ packet.method_29444(), - //$$ packet.getDimensionId(), + packet.method_29444(), + packet.getDimensionId(), //#else - packet.getDimension(), + //$$ packet.getDimension(), //#endif 0, // max players (has no getter -> never actually used) //#if MC<11600 - packet.getGeneratorType(), + //$$ packet.getGeneratorType(), //#endif packet.getChunkLoadDistance(), packet.hasReducedDebugInfo() @@ -645,8 +645,8 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend , packet.showsDeathScreen() //#endif //#if MC>=11600 - //$$ , packet.isDebugWorld() - //$$ , packet.isFlatWorld() + , packet.isDebugWorld() + , packet.isFlatWorld() //#endif ); //#else @@ -688,21 +688,21 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //#if MC>=11400 p = new PlayerRespawnS2CPacket( //#if MC>=11600 - //$$ respawn.method_29445(), + respawn.method_29445(), //#endif respawn.getDimension(), //#if MC>=11500 respawn.getSha256Seed(), //#endif //#if MC>=11600 - //$$ GameMode.SPECTATOR, - //$$ GameMode.SPECTATOR, - //$$ respawn.isDebugWorld(), - //$$ respawn.isFlatWorld(), - //$$ respawn.isWritingErrorSkippable() + GameMode.SPECTATOR, + GameMode.SPECTATOR, + respawn.isDebugWorld(), + respawn.isFlatWorld(), + respawn.isWritingErrorSkippable() //#else - respawn.getGeneratorType(), - GameMode.SPECTATOR + //$$ respawn.getGeneratorType(), + //$$ GameMode.SPECTATOR //#endif ); //#else @@ -792,22 +792,22 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend // 8 - Fade time if (!Arrays.asList( //#if MC>=11600 - //$$ GameStateChangeS2CPacket.RAIN_STARTED, - //$$ GameStateChangeS2CPacket.RAIN_STOPPED, - //$$ GameStateChangeS2CPacket.RAIN_GRADIENT_CHANGED, - //$$ GameStateChangeS2CPacket.THUNDER_GRADIENT_CHANGED + GameStateChangeS2CPacket.RAIN_STARTED, + GameStateChangeS2CPacket.RAIN_STOPPED, + GameStateChangeS2CPacket.RAIN_GRADIENT_CHANGED, + GameStateChangeS2CPacket.THUNDER_GRADIENT_CHANGED //#else - 1, - 2, - 7, - 8 + //$$ 1, + //$$ 2, + //$$ 7, + //$$ 8 //#endif ).contains(pg.getReason())) { return null; } } - if (p instanceof ChatMessageS2CPacket) { + if (p instanceof GameMessageS2CPacket) { if (!ReplayModReplay.instance.getCore().getSettingsRegistry().get(Setting.SHOW_CHAT)) { return null; } diff --git a/src/main/java/com/replaymod/replay/InputReplayTimer.java b/src/main/java/com/replaymod/replay/InputReplayTimer.java index f60c3265..3f5c8ec5 100644 --- a/src/main/java/com/replaymod/replay/InputReplayTimer.java +++ b/src/main/java/com/replaymod/replay/InputReplayTimer.java @@ -47,9 +47,9 @@ public class InputReplayTimer extends WrappedTimer { @Override public //#if MC>=11600 - //$$ int + int //#else - void + //$$ void //#endif beginRenderTick( //#if MC>=11400 @@ -57,7 +57,7 @@ public class InputReplayTimer extends WrappedTimer { //#endif ) { //#if MC>=11600 - //$$ int ticksThisFrame = + int ticksThisFrame = //#endif super.beginRenderTick( //#if MC>=11400 @@ -124,7 +124,7 @@ public class InputReplayTimer extends WrappedTimer { //#endif } //#if MC>=11600 - //$$ return ticksThisFrame; + return ticksThisFrame; //#endif } diff --git a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java index 4057f02b..c438144b 100644 --- a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java +++ b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java @@ -5,9 +5,6 @@ import com.google.common.util.concurrent.SettableFuture; import com.replaymod.core.ReplayMod; import com.replaymod.core.versions.MCVer; import de.johni0702.minecraft.gui.versions.Image; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.RequiredArgsConstructor; import net.minecraft.client.MinecraftClient; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.util.ScreenshotUtils; @@ -26,13 +23,29 @@ import static com.replaymod.core.versions.MCVer.getWindow; //$$ import java.io.File; //#endif -@RequiredArgsConstructor(access = AccessLevel.PRIVATE) -@Getter public class NoGuiScreenshot { private final Image image; private final int width; private final int height; + private NoGuiScreenshot(Image image, int width, int height) { + this.image = image; + this.width = width; + this.height = height; + } + + public Image getImage() { + return image; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + public static ListenableFuture take(final MinecraftClient mc, final int width, final int height) { final SettableFuture future = SettableFuture.create(); Runnable runnable = new Runnable() { diff --git a/src/main/java/com/replaymod/replay/QuickReplaySender.java b/src/main/java/com/replaymod/replay/QuickReplaySender.java index 90ab72f5..601efec8 100644 --- a/src/main/java/com/replaymod/replay/QuickReplaySender.java +++ b/src/main/java/com/replaymod/replay/QuickReplaySender.java @@ -23,7 +23,7 @@ import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket; import net.minecraft.network.NetworkState; import net.minecraft.network.NetworkSide; import net.minecraft.network.Packet; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; //#if FABRIC>=1 import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; @@ -40,14 +40,14 @@ import java.util.Collections; import java.util.function.Consumer; //#if MC>=11602 -//$$ import net.minecraft.util.registry.DynamicRegistryManager; -//$$ import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.DynamicRegistryManager; +import net.minecraft.util.registry.Registry; //#endif //#if MC>=11600 -//$$ import net.minecraft.world.World; +import net.minecraft.world.World; //#else -import net.minecraft.world.level.LevelGeneratorType; +//$$ import net.minecraft.world.level.LevelGeneratorType; //#endif //#if MC>=11400 import net.minecraft.world.dimension.DimensionType; @@ -201,31 +201,31 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe ctx.fireChannelRead(new PlayerRespawnS2CPacket( //#if MC>=11600 //#if MC>=11602 - //$$ DimensionType.addRegistryDefaults(new DynamicRegistryManager.Impl()).get(Registry.DIMENSION_TYPE_KEY).get(DimensionType.OVERWORLD_REGISTRY_KEY), + DimensionType.addRegistryDefaults(new DynamicRegistryManager.Impl()).get(Registry.DIMENSION_TYPE_KEY).get(DimensionType.OVERWORLD_REGISTRY_KEY), //#else //$$ DimensionType.OVERWORLD_REGISTRY_KEY, //#endif - //$$ World.OVERWORLD, - //$$ 0, - //$$ GameMode.SPECTATOR, - //$$ GameMode.SPECTATOR, - //$$ false, - //$$ false, - //$$ false + World.OVERWORLD, + 0, + GameMode.SPECTATOR, + GameMode.SPECTATOR, + false, + false, + false //#else //#if MC>=11400 - DimensionType.OVERWORLD, + //$$ DimensionType.OVERWORLD, //#else //$$ 0, //#endif //#if MC>=11500 - 0, + //$$ 0, //#endif //#if MC<11400 //$$ EnumDifficulty.NORMAL, //#endif - LevelGeneratorType.DEFAULT, - GameMode.SPECTATOR + //$$ LevelGeneratorType.DEFAULT, + //$$ GameMode.SPECTATOR //#endif )); ctx.fireChannelRead(new PlayerPositionLookS2CPacket(0, 0, 0, 0, 0, Collections.emptySet(), 0)); diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index 5c88dfc0..3cec022f 100644 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -38,8 +38,8 @@ import net.minecraft.network.ClientConnection; import java.io.IOException; import java.util.*; -//#if MC>=11500 -//$$ import net.minecraft.client.util.math.MatrixStack; +//#if MC>=11600 +import net.minecraft.client.util.math.MatrixStack; //#endif //#if MC>=11500 @@ -644,10 +644,10 @@ public class ReplayHandler { resolution = newScaledResolution(mc); guiScreen.toMinecraft().init(mc, resolution.getScaledWidth(), resolution.getScaledHeight()); //#if MC>=11600 - //$$ guiScreen.toMinecraft().render(new MatrixStack(), 0, 0, 0); + guiScreen.toMinecraft().render(new MatrixStack(), 0, 0, 0); //#else //#if MC>=11400 - guiScreen.toMinecraft().render(0, 0, 0); + //$$ guiScreen.toMinecraft().render(0, 0, 0); //#else //$$ guiScreen.toMinecraft().drawScreen(0, 0, 0); //#endif diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index c64f4e27..5c9c6e26 100644 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -10,8 +10,6 @@ import com.replaymod.replay.ReplayModReplay; import com.replaymod.replay.Setting; import com.replaymod.replay.mixin.FirstPersonRendererAccessor; import com.replaymod.replaystudio.util.Location; -import lombok.Getter; -import lombok.Setter; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.ClientPlayNetworkHandler; @@ -66,7 +64,7 @@ import net.minecraft.util.hit.HitResult; import net.minecraft.entity.EquipmentSlot; //#if MC>=11200 //#if MC>=11400 -import net.minecraft.client.recipe.book.ClientRecipeBook; +import net.minecraft.client.recipebook.ClientRecipeBook; //#else //$$ import net.minecraft.stats.RecipeBook; //#endif @@ -105,8 +103,6 @@ public class CameraEntity */ public float roll; - @Getter - @Setter private CameraController cameraController; private long lastControllerUpdate = System.currentTimeMillis(); @@ -154,8 +150,8 @@ public class CameraEntity , recipeBook //#endif //#if MC>=11600 - //$$ , false - //$$ , false + , false + , false //#endif ); eventHandler.register(); @@ -166,6 +162,14 @@ public class CameraEntity } } + public CameraController getCameraController() { + return cameraController; + } + + public void setCameraController(CameraController cameraController) { + this.cameraController = cameraController; + } + /** * Moves the camera by the specified delta. * @param x Delta in X direction @@ -317,8 +321,8 @@ public class CameraEntity //#if MC>=11400 @Override - public boolean isInFluid(Tag fluid) { - return falseUnlessSpectating(entity -> entity.isInFluid(fluid)); + public boolean isSubmergedIn(Tag fluid) { + return falseUnlessSpectating(entity -> entity.isSubmergedIn(fluid)); } //#else //#if MC>=10800 diff --git a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java index 3133484e..9e0c02f7 100644 --- a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java @@ -34,32 +34,32 @@ public class ClassicCameraController implements CameraController { speedup = false; for(KeyBinding kb : getMinecraft().options.keysAll) { if(!kb.isPressed()) continue; - if(kb.getId().equals("key.forward")) { + if(kb.getTranslationKey().equals("key.forward")) { forward = true; speedup = true; } - if(kb.getId().equals("key.back")) { + if(kb.getTranslationKey().equals("key.back")) { backward = true; speedup = true; } - if(kb.getId().equals("key.jump")) { + if(kb.getTranslationKey().equals("key.jump")) { up = true; speedup = true; } - if(kb.getId().equals("key.left")) { + if(kb.getTranslationKey().equals("key.left")) { left = true; speedup = true; } - if(kb.getId().equals("key.right")) { + if(kb.getTranslationKey().equals("key.right")) { right = true; speedup = true; } - if(kb.getId().equals("key.sneak")) { + if(kb.getTranslationKey().equals("key.sneak")) { down = true; speedup = true; } diff --git a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java index c235f510..faf15be6 100644 --- a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java @@ -2,7 +2,6 @@ package com.replaymod.replay.camera; import com.replaymod.replay.ReplayModReplay; import com.replaymod.replay.mixin.EntityPlayerAccessor; -import lombok.RequiredArgsConstructor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.options.KeyBinding; import net.minecraft.entity.Entity; @@ -21,10 +20,13 @@ import java.util.Arrays; import static com.replaymod.core.versions.MCVer.*; -@RequiredArgsConstructor public class SpectatorCameraController implements CameraController { private final CameraEntity camera; + public SpectatorCameraController(CameraEntity camera) { + this.camera = camera; + } + @Override public void update(float partialTicksPassed) { MinecraftClient mc = getMinecraft(); diff --git a/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java b/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java index b207eac6..021e264a 100644 --- a/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java +++ b/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java @@ -2,15 +2,19 @@ //$$ package com.replaymod.replay.events; //$$ //$$ import com.replaymod.replay.camera.CameraEntity; -//$$ import lombok.Getter; -//$$ import lombok.RequiredArgsConstructor; //$$ import net.minecraftforge.eventbus.api.Cancelable; //$$ import net.minecraftforge.eventbus.api.Event; //$$ //$$ @Cancelable -//$$ @RequiredArgsConstructor //$$ public class ReplayChatMessageEvent extends Event { -//$$ @Getter //$$ private final CameraEntity cameraEntity; +//$$ +//$$ public ReplayChatMessageEvent(CameraEntity cameraEntity) { +//$$ this.cameraEntity = cameraEntity; +//$$ } +//$$ +//$$ public CameraEntity getCameraEntity() { +//$$ return cameraEntity; +//$$ } //$$ } //#endif diff --git a/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java b/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java index 0793dad3..ca5c5bd2 100644 --- a/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java +++ b/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java @@ -35,7 +35,6 @@ import de.johni0702.minecraft.gui.utils.Consumer; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; -import lombok.Getter; import net.minecraft.client.gui.screen.NoticeScreen; import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashException; @@ -252,16 +251,12 @@ public class GuiReplayViewer extends GuiScreen { return popup; } - @Getter private final SettableFuture future = SettableFuture.create(); - @Getter private final GuiReplayList list = new GuiReplayList(popup); - @Getter private final GuiButton acceptButton = new GuiButton(popup).setI18nLabel("gui.done").setSize(50, 20).setDisabled(); - @Getter private final GuiButton cancelButton = new GuiButton(popup).setI18nLabel("gui.cancel").setSize(50, 20); @@ -301,6 +296,22 @@ public class GuiReplayViewer extends GuiScreen { }); } + public SettableFuture getFuture() { + return future; + } + + public GuiReplayList getList() { + return list; + } + + public GuiButton getAcceptButton() { + return acceptButton; + } + + public GuiButton getCancelButton() { + return cancelButton; + } + @Override protected GuiSelectReplayPopup getThis() { return this; diff --git a/src/main/java/com/replaymod/replay/handler/GuiHandler.java b/src/main/java/com/replaymod/replay/handler/GuiHandler.java index 97efbbe8..29e3c988 100644 --- a/src/main/java/com/replaymod/replay/handler/GuiHandler.java +++ b/src/main/java/com/replaymod/replay/handler/GuiHandler.java @@ -11,8 +11,8 @@ import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.client.resource.language.I18n; //#if MC>=11600 -//$$ import net.minecraft.text.Text; -//$$ import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; //#endif //#if FABRIC>=1 @@ -62,18 +62,18 @@ public class GuiHandler extends EventRegistrations { mod.getReplayHandler().getReplaySender().setReplaySpeed(0); //#if MC>=11600 - //$$ final TranslatableText BUTTON_OPTIONS = new TranslatableText("menu.options"); - //$$ final TranslatableText BUTTON_EXIT_SERVER = new TranslatableText("menu.disconnect"); - //$$ final TranslatableText BUTTON_ADVANCEMENTS = new TranslatableText("gui.advancements"); - //$$ final TranslatableText BUTTON_STATS = new TranslatableText("gui.stats"); - //$$ final TranslatableText BUTTON_OPEN_TO_LAN = new TranslatableText("menu.shareToLan"); + final TranslatableText BUTTON_OPTIONS = new TranslatableText("menu.options"); + final TranslatableText BUTTON_EXIT_SERVER = new TranslatableText("menu.disconnect"); + final TranslatableText BUTTON_ADVANCEMENTS = new TranslatableText("gui.advancements"); + final TranslatableText BUTTON_STATS = new TranslatableText("gui.stats"); + final TranslatableText BUTTON_OPEN_TO_LAN = new TranslatableText("menu.shareToLan"); //#else //#if MC>=11400 - final String BUTTON_OPTIONS = I18n.translate("menu.options"); - final String BUTTON_EXIT_SERVER = I18n.translate("menu.disconnect"); - final String BUTTON_ADVANCEMENTS = I18n.translate("gui.advancements"); - final String BUTTON_STATS = I18n.translate("gui.stats"); - final String BUTTON_OPEN_TO_LAN = I18n.translate("menu.shareToLan"); + //$$ final String BUTTON_OPTIONS = I18n.translate("menu.options"); + //$$ final String BUTTON_EXIT_SERVER = I18n.translate("menu.disconnect"); + //$$ final String BUTTON_ADVANCEMENTS = I18n.translate("gui.advancements"); + //$$ final String BUTTON_STATS = I18n.translate("gui.stats"); + //$$ final String BUTTON_OPEN_TO_LAN = I18n.translate("menu.shareToLan"); //#else //#if MC>=11400 //$$ final int BUTTON_OPTIONS = 0; @@ -99,9 +99,9 @@ public class GuiHandler extends EventRegistrations { boolean remove = false; //#if MC>=11400 //#if MC>=11600 - //$$ Text id = b.getMessage(); + Text id = b.getMessage(); //#else - String id = b.getMessage(); + //$$ String id = b.getMessage(); //#endif if (id == null) { // likely a button of some third-part mod @@ -301,9 +301,9 @@ public class GuiHandler extends EventRegistrations { width, height, //#if MC>=11600 - //$$ new TranslatableText(buttonText) + new TranslatableText(buttonText) //#else - I18n.translate(buttonText) + //$$ I18n.translate(buttonText) //#endif //#if MC>=11400 , self -> onClick.accept((InjectedButton) self) diff --git a/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java index 8691f481..4ce7a6e5 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java @@ -10,9 +10,9 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //#if MC>=11600 -//$$ import net.minecraft.client.world.ClientWorld; +import net.minecraft.client.world.ClientWorld; //#else -import net.minecraft.world.World; +//$$ import net.minecraft.world.World; //#endif import java.util.Queue; @@ -37,9 +37,9 @@ public abstract class MixinParticleManager { @Inject(method = "setWorld", at = @At("HEAD")) public void replayModReplay_clearParticleQueue( //#if MC>=11600 - //$$ ClientWorld world, + ClientWorld world, //#else - World world, + //$$ World world, //#endif CallbackInfo ci) { //#if MC>=11400 diff --git a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java index 8a01ea1d..2949eba2 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java @@ -19,7 +19,7 @@ import net.minecraft.client.world.ClientWorld; //#if MC>=11200 //#if MC>=11400 -import net.minecraft.client.recipe.book.ClientRecipeBook; +import net.minecraft.client.recipebook.ClientRecipeBook; //#else //$$ import net.minecraft.stats.RecipeBook; //#endif @@ -52,9 +52,9 @@ public abstract class MixinPlayerControllerMP { //#if MC>=11400 //#if MC>=11602 - //$$ @Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true) + @Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true) //#else - @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true) + //$$ @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true) //#endif private void replayModReplay_createReplayCamera( //#if MC>=11400 @@ -65,8 +65,8 @@ public abstract class MixinPlayerControllerMP { StatHandler statisticsManager, ClientRecipeBook recipeBookClient, //#if MC>=11600 - //$$ boolean lastIsHoldingSneakKey, - //$$ boolean lastSprinting, + boolean lastIsHoldingSneakKey, + boolean lastSprinting, //#endif CallbackInfoReturnable ci ) { diff --git a/src/main/java/com/replaymod/simplepathing/InterpolatorType.java b/src/main/java/com/replaymod/simplepathing/InterpolatorType.java index 78993e0d..3fb8cd49 100644 --- a/src/main/java/com/replaymod/simplepathing/InterpolatorType.java +++ b/src/main/java/com/replaymod/simplepathing/InterpolatorType.java @@ -4,26 +4,31 @@ import com.replaymod.replaystudio.pathing.interpolation.CatmullRomSplineInterpol import com.replaymod.replaystudio.pathing.interpolation.CubicSplineInterpolator; import com.replaymod.replaystudio.pathing.interpolation.Interpolator; import com.replaymod.replaystudio.pathing.interpolation.LinearInterpolator; -import lombok.AllArgsConstructor; -import lombok.Getter; import java.util.function.Supplier; -@AllArgsConstructor public enum InterpolatorType { DEFAULT("default", null, null), CATMULL_ROM("catmullrom", CatmullRomSplineInterpolator.class, () -> new CatmullRomSplineInterpolator(0.5)), CUBIC("cubic", CubicSplineInterpolator.class, CubicSplineInterpolator::new), LINEAR("linear", LinearInterpolator.class, LinearInterpolator::new); - @Getter private String localizationKey; - @Getter private Class interpolatorClass; private Supplier interpolatorConstructor; + InterpolatorType(String localizationKey, Class interpolatorClass, Supplier interpolatorConstructor) { + this.localizationKey = localizationKey; + this.interpolatorClass = interpolatorClass; + this.interpolatorConstructor = interpolatorConstructor; + } + + public String getLocalizationKey() { + return localizationKey; + } + public String getI18nName() { return String.format("replaymod.gui.editkeyframe.interpolator.%1$s.name", localizationKey); } @@ -32,6 +37,10 @@ public enum InterpolatorType { return String.format("replaymod.gui.editkeyframe.interpolator.%1$s.desc", localizationKey); } + public Class getInterpolatorClass() { + return interpolatorClass; + } + public static InterpolatorType fromString(String string) { for (InterpolatorType t : values()) { if (t.getI18nName().equals(string)) return t; diff --git a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java index 72409aeb..88380fe9 100644 --- a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java +++ b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java @@ -21,7 +21,6 @@ import com.replaymod.replaystudio.replay.ReplayFile; import com.replaymod.simplepathing.SPTimeline.SPPath; import com.replaymod.simplepathing.gui.GuiPathing; import com.replaymod.simplepathing.preview.PathPreview; -import lombok.Getter; import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashException; import org.apache.logging.log4j.LogManager; @@ -149,7 +148,6 @@ public class ReplayModSimplePathing extends EventRegistrations implements Module private SPTimeline currentTimeline; private SPPath selectedPath; - @Getter private long selectedTime; public SPPath getSelectedPath() { @@ -160,6 +158,10 @@ public class ReplayModSimplePathing extends EventRegistrations implements Module return selectedPath; } + public long getSelectedTime() { + return selectedTime; + } + public boolean isSelected(Keyframe keyframe) { return getSelectedPath() != null && currentTimeline.getKeyframe(selectedPath, selectedTime) == keyframe; } diff --git a/src/main/java/com/replaymod/simplepathing/SPTimeline.java b/src/main/java/com/replaymod/simplepathing/SPTimeline.java index 830291a8..6a035759 100644 --- a/src/main/java/com/replaymod/simplepathing/SPTimeline.java +++ b/src/main/java/com/replaymod/simplepathing/SPTimeline.java @@ -28,7 +28,6 @@ import com.replaymod.replaystudio.pathing.property.Property; import com.replaymod.replaystudio.util.EntityPositionTracker; import com.replaymod.replaystudio.util.Location; import com.replaymod.simplepathing.properties.ExplicitInterpolationProperty; -import lombok.Getter; import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashReportSection; import net.minecraft.util.crash.CrashException; @@ -63,14 +62,10 @@ public class SPTimeline implements PathingRegistry { POSITION, } - @Getter private final Timeline timeline; - @Getter private final Path timePath; - @Getter private final Path positionPath; - @Getter private EntityPositionTracker entityTracker; private InterpolatorType defaultInterpolatorType; @@ -84,6 +79,22 @@ public class SPTimeline implements PathingRegistry { this.positionPath = timeline.getPaths().get(SPPath.POSITION.ordinal()); } + public Timeline getTimeline() { + return timeline; + } + + public Path getTimePath() { + return timePath; + } + + public Path getPositionPath() { + return positionPath; + } + + public EntityPositionTracker getEntityTracker() { + return entityTracker; + } + public Path getPath(SPPath path) { switch (path) { case TIME: diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java b/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java index 48475f3e..27fd2fd1 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java @@ -34,7 +34,6 @@ import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import de.johni0702.minecraft.gui.utils.Colors; import de.johni0702.minecraft.gui.utils.Consumer; import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; -import lombok.Getter; import net.minecraft.client.resource.language.I18n; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -283,7 +282,6 @@ public abstract class GuiEditKeyframe> extends Abst public class InterpolationPanel extends AbstractGuiContainer { - @Getter private SettingsPanel settingsPanel; private GuiDropdownMenu dropdown; @@ -330,6 +328,10 @@ public abstract class GuiEditKeyframe> extends Abst } } + public SettingsPanel getSettingsPanel() { + return settingsPanel; + } + public void setSettingsPanel(InterpolatorType type) { removeElement(this.settingsPanel); diff --git a/src/main/java/com/replaymod/simplepathing/properties/ExplicitInterpolationProperty.java b/src/main/java/com/replaymod/simplepathing/properties/ExplicitInterpolationProperty.java index 5f181191..d86328e9 100644 --- a/src/main/java/com/replaymod/simplepathing/properties/ExplicitInterpolationProperty.java +++ b/src/main/java/com/replaymod/simplepathing/properties/ExplicitInterpolationProperty.java @@ -4,7 +4,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.replaymod.replaystudio.pathing.property.AbstractProperty; import com.replaymod.replaystudio.pathing.property.PropertyPart; -import lombok.NonNull; +import de.johni0702.minecraft.gui.utils.NonNull; import org.apache.commons.lang3.ObjectUtils; import java.io.IOException; diff --git a/src/main/resources/mixins.core.replaymod.json b/src/main/resources/mixins.core.replaymod.json index c403dc01..111052a2 100644 --- a/src/main/resources/mixins.core.replaymod.json +++ b/src/main/resources/mixins.core.replaymod.json @@ -8,7 +8,8 @@ "AbstractButtonWidgetAccessor", "Mixin_ContextualKeyBindings", "MixinGameRenderer", - "MixinModResourcePackUtil", + "Mixin_HideDynamicResourcePacks", + "Mixin_RegisterDynamicResourcePacks", //#endif //#if MC>=11400 "MixinKeyboardListener", diff --git a/version.txt b/version.txt index 35cee72d..79a61441 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.4.3 +2.4.4 diff --git a/versions/common.gradle b/versions/common.gradle index 02aada14..b0719d2f 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -217,7 +217,6 @@ def shadeExclusions = { exclude group: 'com.google.guava', module: 'guava-jdk5' exclude group: 'com.google.guava', module: 'guava' // provided by MC exclude group: 'com.google.code.gson', module: 'gson' // provided by MC - exclude group: 'org.projectlombok', module: 'lombok' // runtime only for @SneakyThrows which isn't used } dependencies { @@ -300,7 +299,6 @@ dependencies { implementation(jGui){ transitive = false // FG 1.2 puts all MC deps into the compile configuration and we don't want to shade those - exclude group: 'org.projectlombok', module: 'lombok' // runtime only for @SneakyThrows which isn't used } shadow 'com.github.ReplayMod:lwjgl-utils:27dcd66' @@ -315,9 +313,6 @@ dependencies { } } - annotationProcessor 'org.projectlombok:lombok:1.18.12' - compile 'org.projectlombok:lombok:1.18.12' // runtime only for @SneakyThrows which isn't used - testCompile 'junit:junit:4.11' } diff --git a/versions/mainProject b/versions/mainProject index 4761f0e9..f21c0ae0 100644 --- a/versions/mainProject +++ b/versions/mainProject @@ -1 +1 @@ -1.15.2 \ No newline at end of file +1.16.2 \ No newline at end of file