From efdcf51c23958157394e1012b67a9cb424593a0c Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Thu, 26 Dec 2019 19:18:34 +0100 Subject: [PATCH] Update to 1.15.1 --- .../component/impl/ComponentDisplay.java | 5 +- .../component/impl/ComponentSummon.java | 16 +- .../builder/component/impl/ComponentTag.java | 14 +- .../builder/impl/BuilderSignEditor.java | 2 +- .../builder/impl/BuilderSummon.java | 2 +- .../config/ConfigCategorySettings.java | 28 +-- .../event/ClientEventHandler.java | 124 +++++++------- .../worldhandler/gui/DummyScreen.java | 24 +++ .../gui/button/GuiButtonBase.java | 11 +- .../gui/button/GuiButtonIcon.java | 8 +- .../gui/button/GuiButtonItem.java | 10 +- .../gui/button/GuiButtonPiano.java | 4 +- .../worldhandler/gui/button/GuiSlider.java | 12 +- .../gui/container/impl/GuiWorldHandler.java | 160 +++++++++--------- .../gui/content/impl/ContentChangeWorld.java | 101 ++++++----- .../gui/content/impl/ContentMain.java | 2 +- .../gui/content/impl/ContentNoteEditor.java | 16 +- .../gui/content/impl/ContentPlayer.java | 20 +-- .../gui/content/impl/ContentPotions.java | 2 +- .../gui/content/impl/ContentSettings.java | 2 +- .../gui/content/impl/ContentSignEditor.java | 14 +- .../gui/content/impl/ContentSummon.java | 6 +- .../worldhandler/util/AdvancementHelper.java | 7 +- .../worldhandler/util/Connection.java | 68 ++++++++ .../worldhandler/util/UtilRender.java | 28 +-- .../assets/worldhandler/lang/de_de.json | 5 + .../assets/worldhandler/lang/en_us.json | 5 + .../assets/worldhandler/lang/zh_cn.json | 5 + .../skins/vanilla/vanilla_buttons.png | Bin 6657 -> 4819 bytes 29 files changed, 416 insertions(+), 285 deletions(-) create mode 100644 src/main/java/exopandora/worldhandler/gui/DummyScreen.java create mode 100644 src/main/java/exopandora/worldhandler/util/Connection.java diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentDisplay.java b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentDisplay.java index 067ad3f..e4369ad 100644 --- a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentDisplay.java +++ b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentDisplay.java @@ -7,7 +7,6 @@ import net.minecraft.nbt.INBT; import net.minecraft.nbt.ListNBT; import net.minecraft.nbt.StringNBT; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -24,7 +23,7 @@ public class ComponentDisplay implements IBuilderComponent if(this.name.getText() != null && !this.name.getText().isEmpty()) { - display.putString("Name", ITextComponent.Serializer.toJson(new StringTextComponent(this.name.toString()))); + display.putString("Name", ITextComponent.Serializer.toJson(this.name)); } ListNBT lore = new ListNBT(); @@ -33,7 +32,7 @@ public class ComponentDisplay implements IBuilderComponent { if(this.lore[x] != null && !this.lore[x].isEmpty()) { - lore.add(new StringNBT(this.lore[x])); + lore.add(StringNBT.func_229705_a_(this.lore[x])); } } diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentSummon.java b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentSummon.java index 10f526d..4261853 100644 --- a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentSummon.java +++ b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentSummon.java @@ -68,37 +68,37 @@ public class ComponentSummon implements IBuilderComponent if(this.name.equalsIgnoreCase("Cat")) { this.tag = "CatType"; - return new IntNBT(this.random.nextInt(3) + 1); + return IntNBT.func_229692_a_(this.random.nextInt(3) + 1); } else if(this.name.equalsIgnoreCase("Farmer") || this.name.equalsIgnoreCase("Fisherman") || this.name.equalsIgnoreCase("Shepherd") || this.name.equalsIgnoreCase("Fletcher")) { this.tag = "Profession"; - return new IntNBT(0); + return IntNBT.func_229692_a_(0); } else if(this.name.equalsIgnoreCase("Librarian") || this.name.equalsIgnoreCase("Carthographer")) { this.tag = "Profession"; - return new IntNBT(1); + return IntNBT.func_229692_a_(1); } else if(this.name.equalsIgnoreCase("Cleric") || this.name.equalsIgnoreCase("Priest")) { this.tag = "Profession"; - return new IntNBT(2); + return IntNBT.func_229692_a_(2); } else if(this.name.equalsIgnoreCase("Armorer") || this.name.equalsIgnoreCase("Blacksmith") || this.name.equalsIgnoreCase("WeaponSmith") || this.name.equalsIgnoreCase("ToolSmith")) { this.tag = "Profession"; - return new IntNBT(3); + return IntNBT.func_229692_a_(3); } else if(this.name.equalsIgnoreCase("Butcher") || this.name.equalsIgnoreCase("Leatherworker")) { this.tag = "Profession"; - return new IntNBT(4); + return IntNBT.func_229692_a_(4); } else if(this.name.equalsIgnoreCase("Nitwit")) { this.tag = "Profession"; - return new IntNBT(5); + return IntNBT.func_229692_a_(5); } if(this.entity != null) @@ -108,7 +108,7 @@ public class ComponentSummon implements IBuilderComponent if(StringUtils.containsIgnoreCase(this.name, "Baby")) { this.tag = "IsBaby"; - return new ByteNBT((byte) 1); + return ByteNBT.func_229671_a_((byte) 1); } } else if(this.entity.equals(EntityType.CHICKEN.getRegistryName())) diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java index ea5c9f9..1a99c55 100644 --- a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java +++ b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java @@ -80,7 +80,7 @@ public class ComponentTag implements IBuilderComponent return null; } - return new StringNBT(string); + return StringNBT.func_229705_a_(string); } else if(this.value instanceof INBT) { @@ -98,27 +98,27 @@ public class ComponentTag implements IBuilderComponent } else if(this.value instanceof Integer) { - return new IntNBT((Integer) this.value); + return IntNBT.func_229692_a_((Integer) this.value); } else if(this.value instanceof Byte) { - return new ByteNBT((Byte) this.value); + return ByteNBT.func_229671_a_((Byte) this.value); } else if(this.value instanceof Float) { - return new FloatNBT((Float) this.value); + return FloatNBT.func_229689_a_((Float) this.value); } else if(this.value instanceof Double) { - return new DoubleNBT((Double) this.value); + return DoubleNBT.func_229684_a_((Double) this.value); } else if(this.value instanceof Long) { - return new LongNBT((Long) this.value); + return LongNBT.func_229698_a_((Long) this.value); } else if(this.value instanceof Short) { - return new ShortNBT((Short) this.value); + return ShortNBT.func_229701_a_((Short) this.value); } else if(this.value instanceof Byte[]) { diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderSignEditor.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderSignEditor.java index 1b8cbe6..216f537 100644 --- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderSignEditor.java +++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderSignEditor.java @@ -23,7 +23,7 @@ public class BuilderSignEditor extends BuilderData for(int x = 0; x < 4; x++) { - this.sign[x] = this.registerNBTComponent(new ComponentTag("Text" + (x + 1), new SignText(x), text -> new StringNBT(text.toString()))); + this.sign[x] = this.registerNBTComponent(new ComponentTag("Text" + (x + 1), new SignText(x), text -> StringNBT.func_229705_a_(text.toString()))); } } diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderSummon.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderSummon.java index 6ed3d66..5c5dfc0 100644 --- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderSummon.java +++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderSummon.java @@ -349,7 +349,7 @@ public class BuilderSummon extends CommandBuilderNBT { if(string.getUnformattedComponentText() != null && !string.getUnformattedComponentText().isEmpty()) { - return new StringNBT(string.serialize()); + return StringNBT.func_229705_a_(string.serialize()); } return null; diff --git a/src/main/java/exopandora/worldhandler/config/ConfigCategorySettings.java b/src/main/java/exopandora/worldhandler/config/ConfigCategorySettings.java index b84e5c7..1acee53 100644 --- a/src/main/java/exopandora/worldhandler/config/ConfigCategorySettings.java +++ b/src/main/java/exopandora/worldhandler/config/ConfigCategorySettings.java @@ -21,7 +21,7 @@ public class ConfigCategorySettings private final BooleanValue pause; private final BooleanValue customTimes; private final BooleanValue permissionQuery; - private final BooleanValue highlightBlocks; +// private final BooleanValue highlightBlocks; private final IntValue dawn; private final IntValue noon; private final IntValue sunset; @@ -68,10 +68,10 @@ public class ConfigCategorySettings .translation("gui.worldhandler.config.settings.permission_query") .comment("Whether or not the permission query is enabled") .define("permission_query", true); - this.highlightBlocks = builder - .translation("gui.worldhandler.config.settings.highlight_blocks") - .comment("Whether or not selected blocks will be highlighted") - .define("highlight_blocks", true); +// this.highlightBlocks = builder +// .translation("gui.worldhandler.config.settings.highlight_blocks") +// .comment("Whether or not selected blocks will be highlighted") +// .define("highlight_blocks", true); this.dawn = builder .translation("gui.worldhandler.config.settings.custom_time_dawn") @@ -188,15 +188,15 @@ public class ConfigCategorySettings Config.set(this.permissionQuery, enabled); } - public boolean highlightBlocks() - { - return this.highlightBlocks.get(); - } - - public void setHighlightBlocks(boolean enabled) - { - Config.set(this.highlightBlocks, enabled); - } +// public boolean highlightBlocks() +// { +// return this.highlightBlocks.get(); +// } +// +// public void setHighlightBlocks(boolean enabled) +// { +// Config.set(this.highlightBlocks, enabled); +// } public int getDawn() { diff --git a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java index 710faec..585387c 100644 --- a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java +++ b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java @@ -1,20 +1,13 @@ package exopandora.worldhandler.event; -import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.ParseResults; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import exopandora.worldhandler.config.Config; -import exopandora.worldhandler.util.BlockHelper; import exopandora.worldhandler.util.CommandHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.command.CommandSource; -import net.minecraft.util.math.Vec3d; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.ClientChatEvent; @@ -27,63 +20,66 @@ public class ClientEventHandler @SubscribeEvent public static void renderWorldLastEvent(RenderWorldLastEvent event) { - if(Config.getSettings().highlightBlocks() && Minecraft.getInstance().world != null && Minecraft.getInstance().getRenderManager().info != null) - { - GlStateManager.pushMatrix(); - GlStateManager.disableAlphaTest(); - GlStateManager.enableBlend(); - GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - GlStateManager.lineWidth(2.0F); - GlStateManager.disableTexture(); - GlStateManager.depthMask(false); - - final double constant = 0.0020000000949949026D; - Vec3d projected = Minecraft.getInstance().getRenderManager().info.getProjectedView(); - - double minX = Math.min(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) - constant - projected.x; - double minY = Math.min(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) - constant - projected.y; - double minZ = Math.min(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) - constant - projected.z; - - double maxX = Math.max(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) + constant - projected.x + 1; - double maxY = Math.max(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) + constant - projected.y + 1; - double maxZ = Math.max(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) + constant - projected.z + 1; - - Tessellator tesselator = Tessellator.getInstance(); - BufferBuilder buffer = tesselator.getBuffer(); - - final int alpha = 255; - final int color1 = 223; - final int color2 = 127; - - GlStateManager.lineWidth(2.0F); - buffer.begin(3, DefaultVertexFormats.POSITION_COLOR); - buffer.pos(minX, minY, minZ).color((float) color1, (float) color1, (float) color1, 0.0F).endVertex(); - buffer.pos(minX, minY, minZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, minY, minZ).color(color1, color2, color2, alpha).endVertex(); - buffer.pos(maxX, minY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, minY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, minY, minZ).color(color2, color2, color1, alpha).endVertex(); - buffer.pos(minX, maxY, minZ).color(color2, color1, color2, alpha).endVertex(); - buffer.pos(maxX, maxY, minZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, maxY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, maxY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, maxY, minZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, maxY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(minX, minY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, minY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, maxY, maxZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, maxY, minZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, minY, minZ).color(color1, color1, color1, alpha).endVertex(); - buffer.pos(maxX, minY, minZ).color((float) color1, (float) color1, (float) color1, 0.0F).endVertex(); - tesselator.draw(); - - GlStateManager.lineWidth(1.0F); - GlStateManager.depthMask(true); - GlStateManager.enableTexture(); - GlStateManager.disableBlend(); - GlStateManager.enableAlphaTest(); - GlStateManager.popMatrix(); - } +// if(Config.getSettings().highlightBlocks() && Minecraft.getInstance().world != null && Minecraft.getInstance().getRenderManager().info != null) +// { +// final double constant = 0.0020000000949949026D; +// Vec3d projected = Minecraft.getInstance().getRenderManager().info.getProjectedView(); +// +// double minX = Math.min(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) - constant - projected.getX(); +// double minY = Math.min(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) - constant - projected.getY(); +// double minZ = Math.min(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) - constant - projected.getZ(); +// +// double maxX = Math.max(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) + constant - projected.getX() + 1; +// double maxY = Math.max(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) + constant - projected.getY() + 1; +// double maxZ = Math.max(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) + constant - projected.getZ() + 1; +// +// IVertexBuilder builder = Minecraft.getInstance().func_228019_au_().func_228487_b_().getBuffer(RenderType.func_228659_m_()); +// WorldRenderer.func_228427_a_(event.getMatrixStack(), builder, minX, minY, minZ, maxX, maxY, maxZ, 1.0F, 0.5F, 0.5F, 1.0F); +// +// RenderSystem.pushMatrix(); +// RenderSystem.disableAlphaTest(); +// RenderSystem.enableBlend(); +// RenderSystem.defaultBlendFunc(); +// RenderSystem.lineWidth(2.0F); +// RenderSystem.disableTexture(); +// RenderSystem.depthMask(false); +// +// Tessellator tesselator = Tessellator.getInstance(); +// BufferBuilder buffer = tesselator.getBuffer(); +// +// final int alpha = 255; +// final int color1 = 223; +// final int color2 = 127; +// +// RenderSystem.lineWidth(2.0F); +// buffer.begin(3, DefaultVertexFormats.POSITION_COLOR); +// buffer.func_225582_a_(minX, minY, minZ).func_225586_a_(color1, color1, color1, 0).endVertex(); +// buffer.func_225582_a_(minX, minY, minZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, minY, minZ).func_225586_a_(color1, color2, color2, alpha).endVertex(); +// buffer.func_225582_a_(maxX, minY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, minY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, minY, minZ).func_225586_a_(color2, color2, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, maxY, minZ).func_225586_a_(color2, color1, color2, alpha).endVertex(); +// buffer.func_225582_a_(maxX, maxY, minZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, maxY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, maxY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, maxY, minZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, maxY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(minX, minY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, minY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, maxY, maxZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, maxY, minZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, minY, minZ).func_225586_a_(color1, color1, color1, alpha).endVertex(); +// buffer.func_225582_a_(maxX, minY, minZ).func_225586_a_(color1, color1, color1, 0).endVertex(); +// tesselator.draw(); +// +// RenderSystem.lineWidth(1.0F); +// RenderSystem.depthMask(true); +// RenderSystem.enableTexture(); +// RenderSystem.disableBlend(); +// RenderSystem.enableAlphaTest(); +// RenderSystem.popMatrix(); +// } } @SubscribeEvent diff --git a/src/main/java/exopandora/worldhandler/gui/DummyScreen.java b/src/main/java/exopandora/worldhandler/gui/DummyScreen.java new file mode 100644 index 0000000..cc86f0e --- /dev/null +++ b/src/main/java/exopandora/worldhandler/gui/DummyScreen.java @@ -0,0 +1,24 @@ +package exopandora.worldhandler.gui; + +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class DummyScreen extends Screen +{ + private final Runnable runnable; + + public DummyScreen(Runnable runnable) + { + super(new StringTextComponent("")); + this.runnable = runnable; + } + + @Override + protected void init() + { + this.runnable.run(); + } +} diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonBase.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonBase.java index 4091990..08625b3 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonBase.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonBase.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.button; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.config.Config; import exopandora.worldhandler.util.ActionHandler; @@ -29,11 +29,10 @@ public class GuiButtonBase extends Button @Override protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) { - GlStateManager.enableBlend(); - GlStateManager.color4f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF(), Config.getSkin().getButtonAlphaF()); + RenderSystem.enableBlend(); + RenderSystem.color4f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF(), Config.getSkin().getButtonAlphaF()); int hovered = this.getYImage(this.isHovered()); - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.getButtonTexture()); if(Config.getSkin().getTextureType().equals("resourcepack")) @@ -47,7 +46,7 @@ public class GuiButtonBase extends Button this.blit(this.x + this.width / 2, this.y, 200 - this.width / 2, hovered * 20, this.width / 2, this.height); } - GlStateManager.disableBlend(); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.disableBlend(); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); } } diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonIcon.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonIcon.java index 5b53b91..73cc690 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonIcon.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonIcon.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.button; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.util.ActionHandler; import exopandora.worldhandler.util.ResourceHelper; @@ -38,16 +38,16 @@ public class GuiButtonIcon extends GuiButtonTooltip { if(this.isHovered()) { - GlStateManager.color4f(1.0F, 1.0F, 0.6F, 1.0F); + RenderSystem.color4f(1.0F, 1.0F, 0.6F, 1.0F); } else { - GlStateManager.color4f(0.95F, 0.95F, 0.95F, 1.0F); + RenderSystem.color4f(0.95F, 0.95F, 0.95F, 1.0F); } } else { - GlStateManager.color4f(0.8F, 0.8F, 0.8F, 1.0F); + RenderSystem.color4f(0.8F, 0.8F, 0.8F, 1.0F); } this.blit(this.x + this.width / 2 - 4, this.y + 6, this.icon.getX() * 8, this.icon.getY() * 8, 8, 8); diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonItem.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonItem.java index 977633d..eb06b64 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonItem.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonItem.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.button; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.util.ActionHandler; import net.minecraft.client.Minecraft; @@ -31,13 +31,13 @@ public class GuiButtonItem extends GuiButtonBase { super.renderBg(Minecraft.getInstance(), mouseX, mouseY); - GlStateManager.enableRescaleNormal(); - RenderHelper.enableGUIStandardItemLighting(); + RenderSystem.enableRescaleNormal(); + RenderHelper.func_227784_d_(); Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(this.stack, this.x + this.width / 2 - 8, this.y + 2); RenderHelper.disableStandardItemLighting(); - GlStateManager.disableRescaleNormal(); - GlStateManager.enableAlphaTest(); + RenderSystem.disableRescaleNormal(); + RenderSystem.enableAlphaTest(); } } diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonPiano.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonPiano.java index c110d7b..9f02b63 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonPiano.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonPiano.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.button; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.Main; import exopandora.worldhandler.config.Config; @@ -52,7 +52,7 @@ public class GuiButtonPiano extends GuiButtonBase } int hoverstate = this.getYImage(this.isHovered); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, Config.getSkin().getButtonAlphaF()); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, Config.getSkin().getButtonAlphaF()); Minecraft.getInstance().getTextureManager().bindTexture(NOTE); switch(this.type) diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java index 72676ac..f17f840 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java @@ -2,7 +2,7 @@ package exopandora.worldhandler.gui.button; import java.util.Objects; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.config.Config; import exopandora.worldhandler.gui.container.Container; @@ -38,15 +38,15 @@ public class GuiSlider extends GuiButtonBase int xOffset = Config.getSkin().getTextureType().equals("resourcepack") ? 0 : -46; - GlStateManager.pushMatrix(); - GlStateManager.enableBlend(); - GlStateManager.color4f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF(), Config.getSkin().getButtonAlphaF()); + RenderSystem.pushMatrix(); + RenderSystem.enableBlend(); + RenderSystem.color4f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF(), Config.getSkin().getButtonAlphaF()); this.blit(this.x + (int) (this.persistence.getValue() * (float) (this.width - 8)), this.y, 0, 66 + xOffset, 4, 20); this.blit(this.x + (int) (this.persistence.getValue() * (float) (this.width - 8)) + 4, this.y, 196, 66 + xOffset, 4, 20); - GlStateManager.disableBlend(); - GlStateManager.popMatrix(); + RenderSystem.disableBlend(); + RenderSystem.popMatrix(); } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java index 58464c8..be03f06 100644 --- a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java +++ b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java @@ -9,7 +9,7 @@ import java.util.function.BiConsumer; import javax.annotation.Nullable; import com.google.common.base.Predicates; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.Main; import exopandora.worldhandler.builder.impl.BuilderWorldHandler; @@ -190,26 +190,6 @@ public class GuiWorldHandler extends Container } } - private int getContentX() - { - return this.getBackgroundX() + 8; - } - - private int getContentY() - { - return this.getBackgroundY() + 33; - } - - private int getXOffset() - { - return 0; - } - - private int getYOffset() - { - return Config.getSettings().shortcuts() ? 11 : 8; - } - @Override public void tick() { @@ -300,55 +280,6 @@ public class GuiWorldHandler extends Container this.content.onPlayerNameChanged(GuiWorldHandler.player); } - private void defaultColor() - { - this.defaultColor(1.0F); - } - - private void defaultColor(float alpha) - { - GlStateManager.enableBlend(); - GlStateManager.color4f(Config.getSkin().getBackgroundRedF(), Config.getSkin().getBackgroundGreenF(), Config.getSkin().getBackgroundBlueF(), alpha * Config.getSkin().getBackgroundAlphaF()); - } - - private void darkColor() - { - GlStateManager.enableBlend(); - GlStateManager.color4f(Config.getSkin().getBackgroundRedF() - 0.3F, Config.getSkin().getBackgroundGreenF() - 0.3F, Config.getSkin().getBackgroundBlueF() - 0.3F, Config.getSkin().getBackgroundAlphaF()); - } - - private void bindBackground() - { - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.getBackgroundTexture()); - } - - @Nullable - protected String getSplash() - { - Calendar calendar = Calendar.getInstance(); - int day = calendar.get(Calendar.DAY_OF_MONTH); - int month = calendar.get(Calendar.MONTH) + 1; - - if(day == 12 && month == 24) - { - return "Merry X-mas!"; - } - else if(day == 1 && month == 1) - { - return "Happy new year!"; - } - else if(day == 10 && month == 31) - { - return "OOoooOOOoooo! Spooky!"; - } - else if(day == 3 && month == 28) - { - return (calendar.get(Calendar.YEAR) - 2013) + " Years of World Handler!"; - } - - return null; - } - @Override public void render(int mouseX, int mouseY, float partialTicks) { @@ -361,6 +292,7 @@ public class GuiWorldHandler extends Container if(Config.getSkin().drawBackground()) { + this.setBlitOffset(-1); super.renderBackground(); } @@ -375,6 +307,7 @@ public class GuiWorldHandler extends Container //TABS + this.setBlitOffset(0); this.forEachTab(this::drawTab); this.defaultColor(); @@ -412,7 +345,7 @@ public class GuiWorldHandler extends Container if(mouseX >= watchX && mouseX <= watchX + 9 && mouseY >= watchY && mouseY <= watchY + 9) { GuiUtils.drawHoveringText(Arrays.asList(TextFormatting.formatWorldTime(Minecraft.getInstance().world.getDayTime())), mouseX, mouseY + 9, this.width, this.height, this.width, this.font); - GlStateManager.disableLighting(); + RenderSystem.disableLighting(); } } } @@ -446,19 +379,19 @@ public class GuiWorldHandler extends Container if(this.splash != null) { - GlStateManager.pushMatrix(); - RenderHelper.enableGUIStandardItemLighting(); - GlStateManager.disableLighting(); - GlStateManager.translatef((float) (backgroundX + 212), backgroundY + 15, 0.0F); - GlStateManager.rotatef(17.0F, 0.0F, 0.0F, 1.0F); + RenderSystem.pushMatrix(); + RenderHelper.func_227784_d_(); + RenderSystem.disableLighting(); + RenderSystem.translatef((float) (backgroundX + 212), backgroundY + 15, 0.0F); + RenderSystem.rotatef(17.0F, 0.0F, 0.0F, 1.0F); float scale = 1.1F - MathHelper.abs(MathHelper.sin((float) (System.currentTimeMillis() % 1000L) / 1000.0F * (float) Math.PI * 2.0F) * 0.1F); scale = scale * 100.0F / this.font.getStringWidth(this.splash); - GlStateManager.scalef(scale, scale, scale); + RenderSystem.scalef(scale, scale, scale); this.drawCenteredString(this.font, this.splash, 0, (int) scale, 0xFFFF00); - GlStateManager.popMatrix(); + RenderSystem.popMatrix(); } //TOOLTIPS @@ -510,6 +443,7 @@ public class GuiWorldHandler extends Container } this.bindBackground(); + this.setBlitOffset(-1); this.blit((int) (backgroundX + xOffset), (int) (backgroundY + yOffset), 0, 0, (int) Math.ceil(this.tabHalf), fHeight); this.blit((int) (backgroundX + this.tabHalf + xOffset), (int) (backgroundY + yOffset), this.bgTextureWidth - (int) Math.floor(this.tabHalf + 1), 0, (int) Math.floor(this.tabHalf + 1), fHeight); @@ -596,6 +530,7 @@ public class GuiWorldHandler extends Container } } + this.setBlitOffset(0); this.drawCenteredString(this.font, TextFormatting.shortenString(net.minecraft.util.text.TextFormatting.UNDERLINE + tab.getTabTitle(), (int) this.tabWidth, this.font), (int) (backgroundX + this.tabHalf + xOffset), (int) (backgroundY - 13), color); } @@ -640,6 +575,75 @@ public class GuiWorldHandler extends Container return super.keyPressed(keyCode, scanCode, modifiers); } + private void defaultColor() + { + this.defaultColor(1.0F); + } + + private void defaultColor(float alpha) + { + RenderSystem.enableBlend(); + RenderSystem.color4f(Config.getSkin().getBackgroundRedF(), Config.getSkin().getBackgroundGreenF(), Config.getSkin().getBackgroundBlueF(), alpha * Config.getSkin().getBackgroundAlphaF()); + } + + private void darkColor() + { + RenderSystem.enableBlend(); + RenderSystem.color4f(Config.getSkin().getBackgroundRedF() - 0.3F, Config.getSkin().getBackgroundGreenF() - 0.3F, Config.getSkin().getBackgroundBlueF() - 0.3F, Config.getSkin().getBackgroundAlphaF()); + } + + private void bindBackground() + { + Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.getBackgroundTexture()); + } + + private int getContentX() + { + return this.getBackgroundX() + 8; + } + + private int getContentY() + { + return this.getBackgroundY() + 33; + } + + private int getXOffset() + { + return 0; + } + + private int getYOffset() + { + return Config.getSettings().shortcuts() ? 11 : 8; + } + + @Nullable + protected String getSplash() + { + Calendar calendar = Calendar.getInstance(); + int day = calendar.get(Calendar.DAY_OF_MONTH); + int month = calendar.get(Calendar.MONTH) + 1; + + if(day == 12 && month == 24) + { + return "Merry X-mas!"; + } + else if(day == 1 && month == 1) + { + return "Happy new year!"; + } + else if(day == 10 && month == 31) + { + return "OOoooOOOoooo! Spooky!"; + } + else if(day == 3 && month == 28) + { + return (calendar.get(Calendar.YEAR) - 2013) + " Years of World Handler!"; + } + + return null; + } + @Override public void onClose() { diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java index d0c7251..4eac253 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java @@ -1,17 +1,23 @@ package exopandora.worldhandler.gui.content.impl; +import exopandora.worldhandler.gui.DummyScreen; import exopandora.worldhandler.gui.button.GuiButtonBase; import exopandora.worldhandler.gui.container.Container; import exopandora.worldhandler.util.ActionHelper; +import exopandora.worldhandler.util.Connection; +import exopandora.worldhandler.util.Connection.DedicatedConnection; +import exopandora.worldhandler.util.Connection.IntegratedConnection; +import exopandora.worldhandler.util.Connection.Type; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.ConnectingScreen; +import net.minecraft.client.gui.screen.DirtMessageScreen; import net.minecraft.client.gui.screen.MainMenuScreen; import net.minecraft.client.gui.screen.MultiplayerScreen; -import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.WorldSelectionScreen; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.resources.I18n; -import net.minecraft.util.text.StringTextComponent; +import net.minecraft.realms.RealmsBridge; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -26,49 +32,66 @@ public class ContentChangeWorld extends ContentChild container.add(new GuiButtonBase(x + 116 / 2, y + 24, 232 / 2, 20, I18n.format("gui.worldhandler.change_world.singleplayer"), () -> { - Minecraft.getInstance().displayGuiScreen(new WorldSelectionScreen(container)); + Connection connection = ContentChangeWorld.disconnect(); + Minecraft.getInstance().displayGuiScreen(new WorldSelectionScreen(new DummyScreen(() -> ContentChangeWorld.reconnect(connection)))); })); + container.add(new GuiButtonBase(x + 116 / 2, y + 48, 232 / 2, 20, I18n.format("gui.worldhandler.change_world.multiplayer"), () -> { - ServerData server = Minecraft.getInstance().getCurrentServerData(); - - if(server != null) - { - Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); - Minecraft.getInstance().loadWorld(null); - - Minecraft.getInstance().displayGuiScreen(new MultiplayerScreen(new Screen(new StringTextComponent("")) - { - @Override - public void init() - { - Minecraft.getInstance().displayGuiScreen(new ConnectingScreen(new MainMenuScreen(), Minecraft.getInstance(), server)); - Minecraft.getInstance().mouseHelper.grabMouse(); - } - })); - } - else - { - String worldName = Minecraft.getInstance().getIntegratedServer().getWorldName(); - String folderName = Minecraft.getInstance().getIntegratedServer().getFolderName(); - - Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); - Minecraft.getInstance().loadWorld(null); - - Minecraft.getInstance().displayGuiScreen(new MultiplayerScreen(new Screen(new StringTextComponent("")) - { - @Override - public void init() - { - Minecraft.getInstance().launchIntegratedServer(folderName, worldName, null); - Minecraft.getInstance().displayGuiScreen(null); - Minecraft.getInstance().mouseHelper.grabMouse(); - } - })); - } + Connection connection = ContentChangeWorld.disconnect(); + Minecraft.getInstance().displayGuiScreen(new MultiplayerScreen(new DummyScreen(() -> ContentChangeWorld.reconnect(connection)))); })); } + private static Connection disconnect() + { + boolean isIntegrated = Minecraft.getInstance().isIntegratedServerRunning(); + boolean isRealms = Minecraft.getInstance().isConnectedToRealms(); + ServerData data = Minecraft.getInstance().getCurrentServerData(); + + if(isIntegrated) + { + String worldName = Minecraft.getInstance().getIntegratedServer().getWorldName(); + String folderName = Minecraft.getInstance().getIntegratedServer().getFolderName(); + + Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); + Minecraft.getInstance().func_213231_b(new DirtMessageScreen(new TranslationTextComponent("menu.savingLevel"))); + + return new IntegratedConnection(Type.INTEGRATED, worldName, folderName); + } + + Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); + Minecraft.getInstance().func_213254_o(); + + if(isRealms) + { + return null; + } + + return new DedicatedConnection(Type.DEDICATED, data); + } + + private static void reconnect(Connection connection) + { + if(connection == null) + { + RealmsBridge realmsbridge = new RealmsBridge(); + realmsbridge.switchToRealms(new MainMenuScreen()); + } + else if(connection instanceof IntegratedConnection) + { + IntegratedConnection integrated = (IntegratedConnection) connection; + Minecraft.getInstance().launchIntegratedServer(integrated.getFolderName(), integrated.getWorldName(), null); + Minecraft.getInstance().mouseHelper.grabMouse(); + } + else if(connection instanceof DedicatedConnection) + { + DedicatedConnection dedicated = (DedicatedConnection) connection; + Minecraft.getInstance().displayGuiScreen(new ConnectingScreen(new MainMenuScreen(), Minecraft.getInstance(), dedicated.getData())); + Minecraft.getInstance().mouseHelper.grabMouse(); + } + } + @Override public String getTitle() { diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java index d9b7e6d..25912a1 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java @@ -86,7 +86,7 @@ public class ContentMain extends Content container.add(new GuiButtonBase(x + 78, y + 96, 76, 20, I18n.format("gui.worldhandler.resourcepack"), () -> { Minecraft.getInstance().gameSettings.saveOptions(); - Minecraft.getInstance().displayGuiScreen(new ResourcePacksScreen(container)); + Minecraft.getInstance().displayGuiScreen(new ResourcePacksScreen(container, Minecraft.getInstance().gameSettings)); })); container.add(new GuiButtonBase(x + 158, y + 96, 74, 20, I18n.format("gui.worldhandler.generic.backToGame"), ActionHelper::backToGame)); } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java index aefb343..2b87775 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.content.impl; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.Main; import exopandora.worldhandler.builder.ICommandBuilder; @@ -178,7 +178,7 @@ public class ContentNoteEditor extends Content { if(this.isActive) { - GlStateManager.color3f(1.0F, 1.0F, 1.0F); + RenderSystem.color3f(1.0F, 1.0F, 1.0F); Minecraft.getInstance().getTextureManager().bindTexture(NOTE); container.blit(x - 1, y - 1, 0, 0, 8, 59); @@ -194,16 +194,16 @@ public class ContentNoteEditor extends Content { float scale = 4; - GlStateManager.color3f(1.0F, 1.0F, 1.0F); - GlStateManager.pushMatrix(); - RenderHelper.enableGUIStandardItemLighting(); + RenderSystem.color3f(1.0F, 1.0F, 1.0F); + RenderSystem.pushMatrix(); + RenderHelper.func_227784_d_(); - GlStateManager.translatef(container.width / 2 - 8 * scale, container.height / 2 - 15 - 8 * scale, 0); - GlStateManager.scalef(scale, scale, scale); + RenderSystem.translatef(container.width / 2 - 8 * scale, container.height / 2 - 15 - 8 * scale, 0); + RenderSystem.scalef(scale, scale, scale); Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(new ItemStack(Blocks.NOTE_BLOCK), 0, 0); RenderHelper.disableStandardItemLighting(); - GlStateManager.popMatrix(); + RenderSystem.popMatrix(); String displayString = I18n.format("gui.worldhandler.blocks.note_block_editor.look_at_note_block", KeyHandler.KEY_WORLD_HANDLER.getLocalizedName()); FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java index cf3193b..c1ab93e 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.gui.content.impl; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.builder.ICommandBuilder; import exopandora.worldhandler.builder.impl.BuilderGeneric; @@ -115,9 +115,9 @@ public class ContentPlayer extends Content container.add(new GuiButtonBase(x + 118, y + 72, 114, 20, I18n.format("gui.worldhandler.entities.player.position.copy_position"), () -> { - int posX = MathHelper.floor(Minecraft.getInstance().player.posX); - int posY = MathHelper.floor(Minecraft.getInstance().player.posY); - int posZ = MathHelper.floor(Minecraft.getInstance().player.posZ); + int posX = MathHelper.floor(Minecraft.getInstance().player.func_226277_ct_()); + int posY = MathHelper.floor(Minecraft.getInstance().player.func_226278_cu_()); + int posZ = MathHelper.floor(Minecraft.getInstance().player.func_226281_cx_()); Minecraft.getInstance().keyboardListener.setClipboardString(posX + " " + posY + " " + posZ); })); @@ -148,9 +148,9 @@ public class ContentPlayer extends Content @Override public void tick(Container container) { - this.posXField.setText("X: " + MathHelper.floor(Minecraft.getInstance().player.posX)); - this.posYField.setText("Y: " + MathHelper.floor(Minecraft.getInstance().player.posY)); - this.posZField.setText("Z: " + MathHelper.floor(Minecraft.getInstance().player.posZ)); + this.posXField.setText("X: " + MathHelper.floor(Minecraft.getInstance().player.func_226277_ct_())); + this.posYField.setText("Y: " + MathHelper.floor(Minecraft.getInstance().player.func_226278_cu_())); + this.posZField.setText("Z: " + MathHelper.floor(Minecraft.getInstance().player.func_226281_cx_())); this.scoreField.setText(I18n.format("gui.worldhandler.entities.player.score") + ": " + Minecraft.getInstance().player.getScore()); this.coinsField.setText(I18n.format("gui.worldhandler.entities.player.score.experience") + ": " + Minecraft.getInstance().player.experienceLevel + "L"); this.xpField.setText(I18n.format("gui.worldhandler.entities.player.score.experience_coins") + ": " + Minecraft.getInstance().player.experienceTotal); @@ -168,9 +168,9 @@ public class ContentPlayer extends Content Screen.fill(container.width / 2 - playerNameWidth - 1 + 59, yPos - 74, container.width / 2 + playerNameWidth + 1 + 59, yPos - 65, 0x3F000000); Minecraft.getInstance().fontRenderer.drawString(Minecraft.getInstance().player.getName().getFormattedText(), container.width / 2 - playerNameWidth + 59, yPos - 73, 0xE0E0E0); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - InventoryScreen.drawEntityOnScreen(xPos, yPos, 30, xPos - mouseX, yPos - mouseY - 44, Minecraft.getInstance().player); - GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + InventoryScreen.func_228187_a_(xPos, yPos, 30, xPos - mouseX, yPos - mouseY - 44, Minecraft.getInstance().player); + RenderSystem.defaultBlendFunc(); } else if(Page.SCORE.equals(this.page)) { diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java index c70b53b..a5db087 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java @@ -200,7 +200,7 @@ public class ContentPotions extends ContentChild container.init(); })); - boolean enabled = this.builderPotion.getAmplifier() >= 0; + boolean enabled = this.builderPotion.getAmplifier() >= 0 && this.builderPotion.getDuration() > 0; button1.active = enabled; button2.active = enabled; diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java index b22d6d3..69c95fe 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java @@ -36,7 +36,7 @@ public class ContentSettings extends ContentChild SETTINGS.add(new BooleanSetting("pause_game", Config.CLIENT.getSettings()::pause, Config.CLIENT.getSettings()::setPause)); SETTINGS.add(new BooleanSetting("custom_times", Config.CLIENT.getSettings()::customTimes, Config.CLIENT.getSettings()::setCustomTimes)); SETTINGS.add(new BooleanSetting("permission_query", Config.CLIENT.getSettings()::permissionQuery, Config.CLIENT.getSettings()::setPermissionQuery)); - SETTINGS.add(new BooleanSetting("highlight_blocks", Config.CLIENT.getSettings()::highlightBlocks, Config.CLIENT.getSettings()::setHighlightBlocks)); +// SETTINGS.add(new BooleanSetting("highlight_blocks", Config.CLIENT.getSettings()::highlightBlocks, Config.CLIENT.getSettings()::setHighlightBlocks)); SETTINGS.add(new IntegerSetting("custom_time_dawn", Config.CLIENT.getSettings()::getDawn, Config.CLIENT.getSettings()::setDawn)); SETTINGS.add(new IntegerSetting("custom_time_noon", Config.CLIENT.getSettings()::getNoon, Config.CLIENT.getSettings()::setNoon)); SETTINGS.add(new IntegerSetting("custom_time_sunset", Config.CLIENT.getSettings()::getSunset, Config.CLIENT.getSettings()::setSunset)); diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java index 2b9d974..f598848 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java @@ -2,7 +2,7 @@ package exopandora.worldhandler.gui.content.impl; import com.google.common.base.Predicates; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.builder.ICommandBuilder; import exopandora.worldhandler.builder.impl.BuilderSignEditor; @@ -179,16 +179,16 @@ public class ContentSignEditor extends Content { float scale = 4; - GlStateManager.color3f(1.0F, 1.0F, 1.0F); - GlStateManager.pushMatrix(); - RenderHelper.enableGUIStandardItemLighting(); + RenderSystem.color3f(1.0F, 1.0F, 1.0F); + RenderSystem.pushMatrix(); + RenderHelper.func_227784_d_(); - GlStateManager.translatef(container.width / 2 - 8.5F * scale, container.height / 2 - 15 - 8.5F * scale, 0); - GlStateManager.scalef(scale, scale, scale); + RenderSystem.translatef(container.width / 2 - 8.5F * scale, container.height / 2 - 15 - 8.5F * scale, 0); + RenderSystem.scalef(scale, scale, scale); Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(new ItemStack(Items.OAK_SIGN), 0, 0); RenderHelper.disableStandardItemLighting(); - GlStateManager.popMatrix(); + RenderSystem.popMatrix(); String displayString = I18n.format("gui.worldhandler.blocks.sign_editor.look_at_sign", KeyHandler.KEY_WORLD_HANDLER.getLocalizedName()); FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java index 7239b6c..c600548 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java @@ -4,9 +4,8 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.lwjgl.opengl.GL11; - import com.google.common.base.Predicates; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.builder.ICommandBuilder; import exopandora.worldhandler.builder.impl.BuilderSummon; @@ -594,8 +593,9 @@ public class ContentSummon extends Content } else if(Page.EQUIPMENT.equals(this.page)) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getInstance().getTextureManager().bindTexture(new ResourceLocation("textures/gui/container/beacon.png")); + container.setBlitOffset(0); for(int row = 0; row < 3; row++) { diff --git a/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java b/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java index ed13952..aa4c266 100644 --- a/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java +++ b/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java @@ -1,8 +1,10 @@ package exopandora.worldhandler.util; import java.util.Collection; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; +import java.util.stream.Collectors; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementManager; @@ -10,6 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.profiler.IProfiler; import net.minecraft.resources.IFutureReloadListener; import net.minecraft.resources.IResourceManager; +import net.minecraft.resources.IResourcePack; import net.minecraft.resources.ResourcePackInfo; import net.minecraft.resources.ResourcePackType; import net.minecraft.resources.SimpleReloadableResourceManager; @@ -30,13 +33,13 @@ public class AdvancementHelper implements IFutureReloadListener return CompletableFuture.supplyAsync(() -> { SimpleReloadableResourceManager serverResourceManager = new SimpleReloadableResourceManager(ResourcePackType.SERVER_DATA, Thread.currentThread()); - Minecraft.getInstance().getResourcePackList().getEnabledPacks().stream().map(ResourcePackInfo::getResourcePack).forEach(serverResourceManager::addResourcePack); serverResourceManager.addReloadListener(new NetworkTagManager()); serverResourceManager.addReloadListener(this.manager); return serverResourceManager; }).thenCompose(stage::markCompleteAwaitingOthers).thenAcceptAsync(serverResourceManager -> { - serverResourceManager.initialReload(backgroundExecutor, gameExecutor, CompletableFuture.completedFuture(Unit.INSTANCE)); + List list = Minecraft.getInstance().getResourcePackList().getEnabledPacks().stream().map(ResourcePackInfo::getResourcePack).collect(Collectors.toList()); + serverResourceManager.reloadResources(backgroundExecutor, gameExecutor, CompletableFuture.completedFuture(Unit.INSTANCE), list); }); } diff --git a/src/main/java/exopandora/worldhandler/util/Connection.java b/src/main/java/exopandora/worldhandler/util/Connection.java new file mode 100644 index 0000000..2e67d07 --- /dev/null +++ b/src/main/java/exopandora/worldhandler/util/Connection.java @@ -0,0 +1,68 @@ +package exopandora.worldhandler.util; + +import net.minecraft.client.multiplayer.ServerData; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public abstract class Connection +{ + private final Type type; + + public Connection(Type type) + { + this.type = type; + } + + public Type getType() + { + return this.type; + } + + @OnlyIn(Dist.CLIENT) + public static enum Type + { + INTEGRATED, + DEDICATED; + } + + @OnlyIn(Dist.CLIENT) + public static class IntegratedConnection extends Connection + { + private final String worldName; + private final String folderName; + + public IntegratedConnection(Type type, String worldName, String folderName) + { + super(type); + this.worldName = worldName; + this.folderName = folderName; + } + + public String getWorldName() + { + return this.worldName; + } + + public String getFolderName() + { + return this.folderName; + } + } + + @OnlyIn(Dist.CLIENT) + public static class DedicatedConnection extends Connection + { + private final ServerData data; + + public DedicatedConnection(Type type, ServerData data) + { + super(type); + this.data = data; + } + + public ServerData getData() + { + return this.data; + } + } +} \ No newline at end of file diff --git a/src/main/java/exopandora/worldhandler/util/UtilRender.java b/src/main/java/exopandora/worldhandler/util/UtilRender.java index f642434..0333330 100644 --- a/src/main/java/exopandora/worldhandler/util/UtilRender.java +++ b/src/main/java/exopandora/worldhandler/util/UtilRender.java @@ -1,6 +1,6 @@ package exopandora.worldhandler.util; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import exopandora.worldhandler.config.Config; import net.minecraft.client.Minecraft; @@ -25,29 +25,29 @@ public class UtilRender float rotationHour = (360 / 12) * (hour >= 12 ? (hour - 12) : hour) - 180F; float rotationMinute = (360 / 60) * minute - 180F; - GlStateManager.pushMatrix(); - GlStateManager.translatef(width + 5, height + 5, 0F); - GlStateManager.scalef(0.25F, 0.25F, 0.25F); + RenderSystem.pushMatrix(); + RenderSystem.translatef(width + 5, height + 5, 0F); + RenderSystem.scalef(0.25F, 0.25F, 0.25F); - GlStateManager.rotatef(rotationHour, 0F, 0F, 1F); + RenderSystem.rotatef(rotationHour, 0F, 0F, 1F); Screen.fill(-1, -1, 1, 11, 0xFF383838); - GlStateManager.rotatef(-rotationHour, 0F, 0F, 1F); + RenderSystem.rotatef(-rotationHour, 0F, 0F, 1F); - GlStateManager.rotatef(rotationMinute, 0F, 0F, 1F); + RenderSystem.rotatef(rotationMinute, 0F, 0F, 1F); Screen.fill(-1, -1, 1, 15, 0xFF6F6F6F); - GlStateManager.rotatef(-rotationMinute, 0F, 0F, 1F); + RenderSystem.rotatef(-rotationMinute, 0F, 0F, 1F); - GlStateManager.color3f(1.0F, 1.0F, 1.0F); - GlStateManager.popMatrix(); + RenderSystem.color3f(1.0F, 1.0F, 1.0F); + RenderSystem.popMatrix(); - GlStateManager.color3f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF()); + RenderSystem.color3f(Config.getSkin().getButtonRedF(), Config.getSkin().getButtonGreenF(), Config.getSkin().getButtonBlueF()); Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.getIconTexture()); gui.blit(width + 0, height, 48, 0, 10, 10); - GlStateManager.pushMatrix(); - GlStateManager.scalef(0.5F, 0.5F, 0.5F); + RenderSystem.pushMatrix(); + RenderSystem.scalef(0.5F, 0.5F, 0.5F); Screen.fill((width + 5) * 2 - 1, (height + 4) * 2 + 1, (width + 6) * 2 - 1, (height + 5) * 2 + 1, 0xFF000000); - GlStateManager.popMatrix(); + RenderSystem.popMatrix(); } } diff --git a/src/main/resources/assets/worldhandler/lang/de_de.json b/src/main/resources/assets/worldhandler/lang/de_de.json index cc3b8ca..9bcc8f9 100644 --- a/src/main/resources/assets/worldhandler/lang/de_de.json +++ b/src/main/resources/assets/worldhandler/lang/de_de.json @@ -223,6 +223,11 @@ "gui.worldhandler.gamerules.rule.gameLoopFunction": "Game Loop Funktion", "gui.worldhandler.gamerules.rule.maxCommandChainLength": "Kommandokettenlänge", "gui.worldhandler.gamerules.rule.disableRaids": "Deaktiviere Überfälle", + "gui.worldhandler.gamerules.rule.doImmediateRespawn": "Sofortiger Respawn", + "gui.worldhandler.gamerules.rule.doInsomnia": "Schlaflosigkeit", + "gui.worldhandler.gamerules.rule.drowningDamage": "Ertrinkungsschaden", + "gui.worldhandler.gamerules.rule.fallDamage": "Fallschaden", + "gui.worldhandler.gamerules.rule.fireDamage": "Feuerschaden", "gui.worldhandler.world_info.start": "Start", "gui.worldhandler.world_info.world": "Welt", diff --git a/src/main/resources/assets/worldhandler/lang/en_us.json b/src/main/resources/assets/worldhandler/lang/en_us.json index f512c51..3d6ff7b 100644 --- a/src/main/resources/assets/worldhandler/lang/en_us.json +++ b/src/main/resources/assets/worldhandler/lang/en_us.json @@ -222,6 +222,11 @@ "gui.worldhandler.gamerules.rule.gameLoopFunction": "Game Loop Function", "gui.worldhandler.gamerules.rule.maxCommandChainLength": "Command Chain Length", "gui.worldhandler.gamerules.rule.disableRaids": "Disable Raids", + "gui.worldhandler.gamerules.rule.doImmediateRespawn": "Immediate Respawn", + "gui.worldhandler.gamerules.rule.doInsomnia": "Insomnia", + "gui.worldhandler.gamerules.rule.drowningDamage": "Drowning Damage", + "gui.worldhandler.gamerules.rule.fallDamage": "Fall Damage", + "gui.worldhandler.gamerules.rule.fireDamage": "Fire Damage", "gui.worldhandler.world_info.start": "Start", "gui.worldhandler.world_info.world": "World", diff --git a/src/main/resources/assets/worldhandler/lang/zh_cn.json b/src/main/resources/assets/worldhandler/lang/zh_cn.json index 6ef8495..237fee6 100644 --- a/src/main/resources/assets/worldhandler/lang/zh_cn.json +++ b/src/main/resources/assets/worldhandler/lang/zh_cn.json @@ -223,6 +223,11 @@ "gui.worldhandler.gamerules.rule.gameLoopFunction": "每刻运行的函数", "gui.worldhandler.gamerules.rule.maxCommandChainLength": "命令连锁长度", "gui.worldhandler.gamerules.rule.disableRaids": "Disable Raids", + "gui.worldhandler.gamerules.rule.doImmediateRespawn": "Immediate Respawn", + "gui.worldhandler.gamerules.rule.doInsomnia": "Insomnia", + "gui.worldhandler.gamerules.rule.drowningDamage": "Drowning Damage", + "gui.worldhandler.gamerules.rule.fallDamage": "Fall Damage", + "gui.worldhandler.gamerules.rule.fireDamage": "Fire Damage", "gui.worldhandler.world_info.start": "首选项", "gui.worldhandler.world_info.world": "世界", diff --git a/src/main/resources/assets/worldhandler/textures/skins/vanilla/vanilla_buttons.png b/src/main/resources/assets/worldhandler/textures/skins/vanilla/vanilla_buttons.png index fe7b0b53624d9904e84c013fef32d69931193d67..c320b86509360532f1e1661a5163c6980e4992fc 100644 GIT binary patch literal 4819 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 Uc;9Q5{~McYsOdbfRke!vf5(K$%K!iX