From 7498440cd8ee7b10409c88b0a112a8729fe7987c Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Thu, 25 Mar 2021 23:14:35 +0100 Subject: [PATCH] Update forgegradle and minecraftforge Switch to official mappings --- build.gradle | 249 ++++++++---------- gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../exopandora/worldhandler/WorldHandler.java | 2 +- .../component/impl/ComponentAttribute.java | 2 +- .../impl/ComponentAttributeItem.java | 2 +- .../builder/component/impl/EntityNBT.java | 2 +- .../builder/impl/BuilderDifficulty.java | 2 +- .../builder/impl/BuilderEntity.java | 2 +- .../builder/impl/BuilderNoteEditor.java | 4 +- .../builder/types/ArgumentType.java | 2 +- .../builder/types/BlockResourceLocation.java | 4 +- .../builder/types/ItemResourceLocation.java | 2 +- .../worldhandler/command/CommandWH.java | 24 +- .../config/ConfigCategoryButcher.java | 4 +- .../event/ClientEventHandler.java | 42 +-- .../worldhandler/event/KeyHandler.java | 12 +- .../worldhandler/gui/container/Container.java | 2 +- .../gui/container/impl/GuiWorldHandler.java | 36 +-- .../gui/content/impl/ContentAdvancements.java | 2 +- .../gui/content/impl/ContentButcher.java | 10 +- .../content/impl/ContentButcherPresets.java | 6 +- .../content/impl/ContentButcherSettings.java | 4 +- .../gui/content/impl/ContentChangeWorld.java | 40 +-- .../gui/content/impl/ContentCommandStack.java | 10 +- .../gui/content/impl/ContentContainers.java | 10 +- .../gui/content/impl/ContentContinue.java | 12 +- .../gui/content/impl/ContentCustomItem.java | 12 +- .../gui/content/impl/ContentEditBlocks.java | 36 +-- .../gui/content/impl/ContentEnchantment.java | 2 +- .../gui/content/impl/ContentGamerules.java | 10 +- .../gui/content/impl/ContentMain.java | 10 +- .../gui/content/impl/ContentMultiplayer.java | 32 +-- .../gui/content/impl/ContentNoteEditor.java | 18 +- .../gui/content/impl/ContentPlayer.java | 32 +-- .../gui/content/impl/ContentPotions.java | 2 +- .../gui/content/impl/ContentRecipes.java | 8 +- .../impl/ContentScoreboardObjectives.java | 10 +- .../impl/ContentScoreboardPlayers.java | 8 +- .../content/impl/ContentScoreboardTeams.java | 10 +- .../gui/content/impl/ContentSettings.java | 6 +- .../gui/content/impl/ContentSignEditor.java | 18 +- .../gui/content/impl/ContentSummon.java | 20 +- .../gui/content/impl/ContentUsercontent.java | 6 +- .../gui/content/impl/ContentWorldInfo.java | 36 +-- .../gui/menu/impl/ILogicMapped.java | 2 +- .../gui/menu/impl/MenuColorField.java | 30 +-- .../gui/menu/impl/MenuPageList.java | 4 +- .../gui/widget/WidgetCommandSyntax.java | 10 +- .../gui/widget/WidgetNameField.java | 22 +- .../gui/widget/WidgetTabRenderer.java | 4 +- .../worldhandler/gui/widget/WidgetWatch.java | 4 +- .../gui/widget/button/GuiButtonBase.java | 4 +- .../gui/widget/button/GuiButtonIcon.java | 2 +- .../gui/widget/button/GuiButtonItem.java | 4 +- .../gui/widget/button/GuiButtonList.java | 6 +- .../gui/widget/button/GuiButtonPiano.java | 8 +- .../gui/widget/button/GuiSlider.java | 4 +- .../widget/button/GuiTextFieldTooltip.java | 14 +- .../usercontent/UsercontentAPI.java | 2 +- .../usercontent/UsercontentLoader.java | 2 +- .../usercontent/factory/WidgetFactory.java | 6 +- .../worldhandler/util/ActionHelper.java | 56 ++-- .../worldhandler/util/AdvancementHelper.java | 10 +- .../worldhandler/util/BlockHelper.java | 24 +- .../worldhandler/util/CommandHelper.java | 6 +- .../util/MutableStringTextComponent.java | 14 +- .../worldhandler/util/RegistryHelper.java | 14 +- .../worldhandler/util/RenderUtils.java | 42 +-- .../worldhandler/util/ScoreboardHelper.java | 6 +- .../worldhandler/util/SignText.java | 8 +- .../worldhandler/util/TextUtils.java | 10 +- 72 files changed, 530 insertions(+), 553 deletions(-) diff --git a/build.gradle b/build.gradle index b3e72d6..18a343a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,160 +1,137 @@ import org.gradle.plugins.ide.eclipse.model.AccessRule buildscript { - repositories { - maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() - mavenCentral() - } - dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true - } + repositories { + maven { + url = 'https://files.minecraftforge.net/maven' + } + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true + } } + apply plugin: 'net.minecraftforge.gradle' -// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. apply plugin: 'eclipse' -apply plugin: 'maven-publish' version = '1.16.5-2.12' group = 'exopandora.worldhandler' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'WorldHandler' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. minecraft { - // The mappings can be changed at any time, and must be in the following format. - // snapshot_YYYYMMDD Snapshot are built nightly. - // stable_# Stables are built at the discretion of the MCP team. - // Use non-default mappings at your own risk. they may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'snapshot', version: '20201028-1.16.3' - // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. - - accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. - runs { - client { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' - - // Recommended logging level for the console - // property 'forge.logging.console.level', 'debug' - - mods { - worldhandler { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' - - // Recommended logging level for the console - // property 'forge.logging.console.level', 'debug' - - mods { - worldhandler { - source sourceSets.main - } - } - } - - data { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' - - // Recommended logging level for the console - // property 'forge.logging.console.level', 'debug' - - args '--mod', 'worldhandler', '--all', '--output', file('src/generated/resources/') - - mods { - worldhandler { - source sourceSets.main - } - } - } - } + // The mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD Snapshot are built nightly. + // stable_# Stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'official', version: '1.16.5' + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + // property 'forge.logging.console.level', 'debug' + + mods { + worldhandler { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + // property 'forge.logging.console.level', 'debug' + + mods { + worldhandler { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + // property 'forge.logging.console.level', 'debug' + + args '--mod', 'worldhandler', '--all', '--output', file('src/generated/resources/') + + mods { + worldhandler { + source sourceSets.main + } + } + } + } } dependencies { - // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed - // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. - // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft 'net.minecraftforge:forge:1.16.5-36.0.0' - - // You may put jars on which you depend on in ./libs or you may define them like so.. - // compile "some.group:artifact:version:classifier" - // compile "some.group:artifact:version" - - // Real examples - // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env - // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env - - // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. - // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' - - // These dependencies get remapped to your current MCP mappings - // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' - - // For more info... - // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html - // http://www.gradle.org/docs/current/userguide/dependency_management.html - + // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed + // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. + minecraft 'net.minecraftforge:forge:1.16.5-36.1.0' + + // You may put jars on which you depend on in ./libs or you may define them like so.. + // compile "some.group:artifact:version:classifier" + // compile "some.group:artifact:version" + + // Real examples + // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // These dependencies get remapped to your current MCP mappings + // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // For more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html } eclipse { - classpath { - file { - whenMerged { - def jre = entries.find { it.path.contains 'org.eclipse.jdt.launching.JRE_CONTAINER' } - jre.accessRules.add(new AccessRule('accessible', 'jdk/nashorn/**')) - } - } - } + classpath { + file { + whenMerged { + def jre = entries.find { it.path.contains 'org.eclipse.jdt.launching.JRE_CONTAINER' } + jre.accessRules.add(new AccessRule('accessible', 'jdk/nashorn/**')) + } + } + } } -// Example for how to get properties into the manifest for reading by the runtime.. jar { - manifest { - attributes([ - "Specification-Title": "worldhandler", - "Specification-Vendor": "Exopandora", - "Specification-Version": "1", // We are version 1 of ourselves - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"Exopandora", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + manifest { + attributes([ + "Specification-Title": "worldhandler", + "Specification-Vendor": "Exopandora", + "Specification-Version": "1", + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor" :"Exopandora", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "Main-Class": "exopandora.worldhandler.Main" - ]) - } + ]) + } } - -// Example configuration to allow publishing using the maven-publish task -// This is the preferred method to reobfuscate your jar file -jar.finalizedBy('reobfJar') -// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing -//publish.dependsOn('reobfJar') - -publishing { - publications { - mavenJava(MavenPublication) { - artifact jar - } - } - repositories { - maven { - url "file:///${project.projectDir}/mcmodsrepo" - } - } -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265ee94c0ab25cf079ac8ccdf87f41d455d42..0d4a9516871afd710a9d84d89e31ba77745607bd 100644 GIT binary patch delta 22872 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 HKcoKx#<@Jp delta 23104 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 ATTRIBUTES = ForgeRegistries.ATTRIBUTES.getValues().stream().filter(attribute -> !attribute.getAttributeName().equals(I18n.format(attribute.getAttributeName()))).collect(Collectors.toList()); + public static final List ATTRIBUTES = ForgeRegistries.ATTRIBUTES.getValues().stream().filter(attribute -> !attribute.getDescriptionId().equals(I18n.get(attribute.getDescriptionId()))).collect(Collectors.toList()); protected Map attributes = new HashMap(); diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentAttributeItem.java b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentAttributeItem.java index 56ce8f9..f780221 100644 --- a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentAttributeItem.java +++ b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentAttributeItem.java @@ -31,7 +31,7 @@ public class ComponentAttributeItem extends ComponentAttribute attribute.putString("AttributeName", id); attribute.putDouble("Amount", entry.getValue() / 100); attribute.putInt("Operation", 1); // 0 = additive, 1 = percentage - attribute.putUniqueId("UUID", UUID.nameUUIDFromBytes(id.getBytes())); + attribute.putUUID("UUID", UUID.nameUUIDFromBytes(id.getBytes())); attributes.add(attribute); } diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/EntityNBT.java b/src/main/java/exopandora/worldhandler/builder/component/impl/EntityNBT.java index ea42a96..52fdb56 100644 --- a/src/main/java/exopandora/worldhandler/builder/component/impl/EntityNBT.java +++ b/src/main/java/exopandora/worldhandler/builder/component/impl/EntityNBT.java @@ -399,7 +399,7 @@ public class EntityNBT implements IBuilderComponent { try { - this.nbt = JsonToNBT.getTagFromJson("{" + nbt + "}"); + this.nbt = JsonToNBT.parseTag("{" + nbt + "}"); } catch(CommandSyntaxException e) { diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java index 82fec8d..446af71 100644 --- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java +++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java @@ -24,7 +24,7 @@ public class BuilderDifficulty extends CommandBuilder { if(difficulty != null) { - this.setNode(0, difficulty.getTranslationKey()); + this.setNode(0, difficulty.getKey()); } } diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderEntity.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderEntity.java index 7940427..6ed3ffc 100644 --- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderEntity.java +++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderEntity.java @@ -423,7 +423,7 @@ public abstract class BuilderEntity extends CommandBuilderNBT for(EntityType type : ForgeRegistries.ENTITIES.getValues()) { - if(type.isSummonable() && entityName.equalsIgnoreCase(I18n.format(type.getTranslationKey()))) + if(type.canSummon() && entityName.equalsIgnoreCase(I18n.get(type.getDescriptionId()))) { return type.getRegistryName(); } diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderNoteEditor.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderNoteEditor.java index 14ec9b1..7c781ae 100644 --- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderNoteEditor.java +++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderNoteEditor.java @@ -27,12 +27,12 @@ public class BuilderNoteEditor extends BuilderSetBlock { this(note); this.setPosition(pos); - this.setState(BlockStateProperties.NOTE_BLOCK_INSTRUMENT, NoteBlockInstrument.byState(Minecraft.getInstance().world.getBlockState(pos.down()))); + this.setState(BlockStateProperties.NOTEBLOCK_INSTRUMENT, NoteBlockInstrument.byState(Minecraft.getInstance().level.getBlockState(pos.below()))); } public void setNote(int note) { - this.setState(BlockStateProperties.NOTE_0_24, note); + this.setState(BlockStateProperties.NOTE, note); } public BuilderNoteEditor build(int note) diff --git a/src/main/java/exopandora/worldhandler/builder/types/ArgumentType.java b/src/main/java/exopandora/worldhandler/builder/types/ArgumentType.java index 9d93879..3b6a7d0 100644 --- a/src/main/java/exopandora/worldhandler/builder/types/ArgumentType.java +++ b/src/main/java/exopandora/worldhandler/builder/types/ArgumentType.java @@ -72,7 +72,7 @@ public enum ArgumentType { try { - return JsonToNBT.getTagFromJson(value); + return JsonToNBT.parseTag(value); } catch(CommandSyntaxException e) { diff --git a/src/main/java/exopandora/worldhandler/builder/types/BlockResourceLocation.java b/src/main/java/exopandora/worldhandler/builder/types/BlockResourceLocation.java index 6483527..7a2b008 100644 --- a/src/main/java/exopandora/worldhandler/builder/types/BlockResourceLocation.java +++ b/src/main/java/exopandora/worldhandler/builder/types/BlockResourceLocation.java @@ -52,7 +52,7 @@ public class BlockResourceLocation extends ItemResourceLocation if(resource != null && ForgeRegistries.BLOCKS.containsKey(resource)) { - return ForgeRegistries.BLOCKS.getValue(resource).getDefaultState(); + return ForgeRegistries.BLOCKS.getValue(resource).defaultBlockState(); } return null; @@ -75,7 +75,7 @@ public class BlockResourceLocation extends ItemResourceLocation { if(this.state != null && this.state.hasProperty(property)) { - this.state = this.state.with(property, value); + this.state = this.state.setValue(property, value); } } diff --git a/src/main/java/exopandora/worldhandler/builder/types/ItemResourceLocation.java b/src/main/java/exopandora/worldhandler/builder/types/ItemResourceLocation.java index 7913fba..affcabb 100644 --- a/src/main/java/exopandora/worldhandler/builder/types/ItemResourceLocation.java +++ b/src/main/java/exopandora/worldhandler/builder/types/ItemResourceLocation.java @@ -63,7 +63,7 @@ public class ItemResourceLocation { try { - nbt = JsonToNBT.getTagFromJson(input.substring(start, input.lastIndexOf("}") + 1)); + nbt = JsonToNBT.parseTag(input.substring(start, input.lastIndexOf("}") + 1)); } catch(CommandSyntaxException e) { diff --git a/src/main/java/exopandora/worldhandler/command/CommandWH.java b/src/main/java/exopandora/worldhandler/command/CommandWH.java index 35668bb..7b0471f 100644 --- a/src/main/java/exopandora/worldhandler/command/CommandWH.java +++ b/src/main/java/exopandora/worldhandler/command/CommandWH.java @@ -41,16 +41,16 @@ public class CommandWH .then(Commands.literal("pos2") .executes(context -> pos2(context.getSource()))) .then(Commands.literal("fill") - .requires(source -> source.hasPermissionLevel(2)) - .then(Commands.argument("block", BlockStateArgument.blockState()) - .executes(context -> fill(context.getSource(), BlockStateArgument.getBlockState(context, "block"))))) + .requires(source -> source.hasPermission(2)) + .then(Commands.argument("block", BlockStateArgument.block()) + .executes(context -> fill(context.getSource(), BlockStateArgument.getBlock(context, "block"))))) .then(Commands.literal("replace") - .requires(source -> source.hasPermissionLevel(2)) - .then(Commands.argument("block", BlockStateArgument.blockState()) - .then(Commands.argument("replace", BlockStateArgument.blockState()) - .executes(context -> replace(context.getSource(), BlockStateArgument.getBlockState(context, "block"), BlockStateArgument.getBlockState(context, "replace")))))) + .requires(source -> source.hasPermission(2)) + .then(Commands.argument("block", BlockStateArgument.block()) + .then(Commands.argument("replace", BlockStateArgument.block()) + .executes(context -> replace(context.getSource(), BlockStateArgument.getBlock(context, "block"), BlockStateArgument.getBlock(context, "replace")))))) .then(Commands.literal("clone") - .requires(source -> source.hasPermissionLevel(2)) + .requires(source -> source.hasPermission(2)) .executes(context -> clone(context.getSource(), "masked")) .then(Commands.literal("filtered") .then(Commands.argument("filter", StringBlockPredicateArgument.blockPredicate()) @@ -110,7 +110,7 @@ public class CommandWH { BuilderFill builder = new BuilderFill(); builder.setBlock1(new BlockResourceLocation(block.getState().getBlock().getRegistryName(), block.getState(), block.tag)); - CommandHelper.sendCommand(source.getName(), builder); + CommandHelper.sendCommand(source.getTextName(), builder); } }); @@ -132,7 +132,7 @@ public class CommandWH builder.setBlockHandling(EnumBlockFilter.REPLACE); builder.setBlock1(new BlockResourceLocation(replace.getState().getBlock().getRegistryName(), replace.getState(), replace.tag)); builder.setBlock2(new BlockResourceLocation(block.getState().getBlock().getRegistryName(), block.getState(), block.tag)); - CommandHelper.sendCommand(source.getName(), builder); + CommandHelper.sendCommand(source.getTextName(), builder); } }); @@ -153,7 +153,7 @@ public class CommandWH builder.setPosition2(BlockHelper.getPos2()); builder.setMask(EnumHelper.valueOf(mask, EnumMask.class)); builder.setFilter(filter); - CommandHelper.sendCommand(source.getName(), builder); + CommandHelper.sendCommand(source.getTextName(), builder); } }); @@ -173,7 +173,7 @@ public class CommandWH builder.setPosition1(BlockHelper.getPos1()); builder.setPosition2(BlockHelper.getPos2()); builder.setMask(EnumHelper.valueOf(mask, EnumMask.class)); - CommandHelper.sendCommand(source.getName(), builder); + CommandHelper.sendCommand(source.getTextName(), builder); } }); diff --git a/src/main/java/exopandora/worldhandler/config/ConfigCategoryButcher.java b/src/main/java/exopandora/worldhandler/config/ConfigCategoryButcher.java index ef08671..843c38f 100644 --- a/src/main/java/exopandora/worldhandler/config/ConfigCategoryButcher.java +++ b/src/main/java/exopandora/worldhandler/config/ConfigCategoryButcher.java @@ -29,7 +29,7 @@ public class ConfigCategoryButcher public List getEntities() { - return this.entities.get().stream().map(ResourceLocation::tryCreate).filter(Predicates.notNull()).collect(Collectors.toList()); + return this.entities.get().stream().map(ResourceLocation::tryParse).filter(Predicates.notNull()).collect(Collectors.toList()); } public boolean containsEntity(ResourceLocation entity) @@ -66,7 +66,7 @@ public class ConfigCategoryButcher { if(string != null) { - return ForgeRegistries.ENTITIES.containsKey(ResourceLocation.tryCreate(string.toString())); + return ForgeRegistries.ENTITIES.containsKey(ResourceLocation.tryParse(string.toString())); } return false; diff --git a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java index 4adfe8a..c0baf4c 100644 --- a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java +++ b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java @@ -29,9 +29,9 @@ public class ClientEventHandler @SubscribeEvent public static void renderWorldLastEvent(RenderWorldLastEvent event) { - if(Config.getSettings().highlightBlocks() && Minecraft.getInstance().world != null && Minecraft.getInstance().getRenderManager().info != null) + if(Config.getSettings().highlightBlocks() && Minecraft.getInstance().level != null && Minecraft.getInstance().getEntityRenderDispatcher().camera != null) { - Vector3d projected = Minecraft.getInstance().getRenderManager().info.getProjectedView(); + Vector3d projected = Minecraft.getInstance().getEntityRenderDispatcher().camera.getPosition(); double minX = Math.min(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()); double minY = Math.min(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()); @@ -46,31 +46,31 @@ public class ClientEventHandler if(aabb.getCenter().distanceTo(projected) < 96) { MatrixStack matrix = event.getMatrixStack(); - matrix.push(); - matrix.translate(-projected.getX(), -projected.getY(), -projected.getZ()); + matrix.pushPose(); + matrix.translate(-projected.x(), -projected.y(), -projected.z()); - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); - IVertexBuilder builder = buffer.getBuffer(RenderType.getLines()); + IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().renderBuffers().bufferSource(); + IVertexBuilder builder = buffer.getBuffer(RenderType.lines()); - WorldRenderer.drawBoundingBox(matrix, builder, minX, minY, minZ, maxX, maxY, maxZ, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); + WorldRenderer.renderLineBox(matrix, builder, minX, minY, minZ, maxX, maxY, maxZ, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); - buffer.finish(RenderType.getLines()); - buffer.finish(); + buffer.endBatch(RenderType.lines()); + buffer.endBatch(); // try // { -// Field field_239227_K_ = WorldRenderer.class.getDeclaredField("field_239227_K_"); -// field_239227_K_.setAccessible(true); -// ShaderGroup shader = (ShaderGroup) field_239227_K_.get(event.getContext()); +// Field transparencyChain = WorldRenderer.class.getDeclaredField("transparencyChain"); +// transparencyChain.setAccessible(true); +// ShaderGroup shader = (ShaderGroup) transparencyChain.get(event.getContext()); // // if(shader != null) // { -// Field field_241712_U_ = RenderState.class.getDeclaredField("field_241712_U_"); -// field_241712_U_.setAccessible(true); -// RenderState.TargetState target = (RenderState.TargetState) field_241712_U_.get(null); +// Field ITEM_ENTITY_TARGET = RenderState.class.getDeclaredField("ITEM_ENTITY_TARGET"); +// ITEM_ENTITY_TARGET.setAccessible(true); +// RenderState.TargetState target = (RenderState.TargetState) ITEM_ENTITY_TARGET.get(null); // target.setupRenderState(); -// event.getContext().func_239229_r_().framebufferClear(Minecraft.IS_RUNNING_ON_MAC); -// event.getContext().func_239229_r_().func_237506_a_(Minecraft.getInstance().getFramebuffer()); +// event.getContext().getItemEntityTarget().framebufferClear(Minecraft.IS_RUNNING_ON_MAC); +// event.getContext().getItemEntityTarget().copyDepthFrom(Minecraft.getInstance().getFramebuffer()); // Minecraft.getInstance().getFramebuffer().bindFramebuffer(false); // target.clearRenderState(); // } @@ -80,7 +80,7 @@ public class ClientEventHandler // e.printStackTrace(); // } - matrix.pop(); + matrix.popPose(); } } } @@ -88,7 +88,7 @@ public class ClientEventHandler @SubscribeEvent public static void clientChatEvent(ClientChatEvent event) { - if(!Minecraft.getInstance().isSingleplayer() && Minecraft.getInstance().player != null) + if(!Minecraft.getInstance().hasSingleplayerServer() && Minecraft.getInstance().player != null) { CommandDispatcher dispatcher = new CommandDispatcher(); CommandHelper.registerCommands(dispatcher); @@ -96,14 +96,14 @@ public class ClientEventHandler StringReader command = new StringReader(event.getMessage()); command.skip(); - ParseResults result = dispatcher.parse(command, Minecraft.getInstance().player.getCommandSource()); + ParseResults result = dispatcher.parse(command, Minecraft.getInstance().player.createCommandSourceStack()); if(result.getContext().getCommand() != null) { try { dispatcher.execute(result); - Minecraft.getInstance().ingameGUI.getChatGUI().addToSentMessages(event.getMessage()); + Minecraft.getInstance().gui.getChat().addRecentChat(event.getMessage()); } catch(CommandSyntaxException e) { diff --git a/src/main/java/exopandora/worldhandler/event/KeyHandler.java b/src/main/java/exopandora/worldhandler/event/KeyHandler.java index c7480b1..9a65dc9 100644 --- a/src/main/java/exopandora/worldhandler/event/KeyHandler.java +++ b/src/main/java/exopandora/worldhandler/event/KeyHandler.java @@ -24,17 +24,17 @@ public class KeyHandler @SubscribeEvent public static void keyInputEvent(KeyInputEvent event) { - if(Minecraft.getInstance() != null && Minecraft.getInstance().currentScreen == null) + if(Minecraft.getInstance() != null && Minecraft.getInstance().screen == null) { - if(KEY_WORLD_HANDLER.isKeyDown()) + if(KEY_WORLD_HANDLER.isDown()) { ActionHelper.displayGui(); } - else if(KEY_WORLD_HANDLER_POS1.isKeyDown() && Config.getSettings().shortcutKeys()) + else if(KEY_WORLD_HANDLER_POS1.isDown() && Config.getSettings().shortcutKeys()) { BlockHelper.setPos1(BlockHelper.getFocusedBlockPos()); } - else if(KEY_WORLD_HANDLER_POS2.isKeyDown() && Config.getSettings().shortcutKeys()) + else if(KEY_WORLD_HANDLER_POS2.isDown() && Config.getSettings().shortcutKeys()) { BlockHelper.setPos2(BlockHelper.getFocusedBlockPos()); } @@ -58,11 +58,11 @@ public class KeyHandler public static boolean arePosKeysRegistered() { - return ArrayUtils.contains(Minecraft.getInstance().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS1) || ArrayUtils.contains(Minecraft.getInstance().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS2); + return ArrayUtils.contains(Minecraft.getInstance().options.keyMappings, KEY_WORLD_HANDLER_POS1) || ArrayUtils.contains(Minecraft.getInstance().options.keyMappings, KEY_WORLD_HANDLER_POS2); } public static void removePosKeys() { - Minecraft.getInstance().gameSettings.keyBindings = ArrayUtils.removeElements(Minecraft.getInstance().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS1, KEY_WORLD_HANDLER_POS2); + Minecraft.getInstance().options.keyMappings = ArrayUtils.removeElements(Minecraft.getInstance().options.keyMappings, KEY_WORLD_HANDLER_POS1, KEY_WORLD_HANDLER_POS2); } } diff --git a/src/main/java/exopandora/worldhandler/gui/container/Container.java b/src/main/java/exopandora/worldhandler/gui/container/Container.java index 3e79572..1a6f6be 100644 --- a/src/main/java/exopandora/worldhandler/gui/container/Container.java +++ b/src/main/java/exopandora/worldhandler/gui/container/Container.java @@ -37,7 +37,7 @@ public abstract class Container extends Screen implements IContainer public T add(T textfield) { - return super.addListener(textfield); + return super.addWidget(textfield); } @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 b9a26d9..c92ace0 100644 --- a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java +++ b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java @@ -34,7 +34,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class GuiWorldHandler extends Container { - private static String player = Minecraft.getInstance().getSession().getUsername(); + private static String player = Minecraft.getInstance().getUser().getName(); private final static List WIDGETS = Util.make(Lists.newArrayList(), widgets -> { widgets.add(new WidgetTabRenderer()); @@ -169,9 +169,9 @@ public class GuiWorldHandler extends Container this.blit(matrix, backgroundX, backgroundY, 0, 0, this.getBackgroundWidth(), this.getBackgroundHeight()); final String label = Main.MC_VERSION + "-" + Main.MOD_VERSION; - final int versionWidth = this.width - this.font.getStringWidth(label) - 2; + final int versionWidth = this.width - this.font.width(label) - 2; final int versionHeight = this.height - 10; - this.font.drawString(matrix, label, versionWidth, versionHeight, Config.getSkin().getLabelColor() + 0x33000000); + this.font.draw(matrix, label, versionWidth, versionHeight, Config.getSkin().getLabelColor() + 0x33000000); int x = this.getContentX(); int y = this.getContentY(); @@ -184,8 +184,8 @@ public class GuiWorldHandler extends Container } } - final int maxWidth = this.getBackgroundWidth() - 18 - this.font.getStringWidth(this.getPlayer()) - (Config.getSettings().watch() ? 9 : 0); - this.font.func_243248_b(matrix, TextUtils.stripText(this.content.getTitle(), maxWidth, this.font), backgroundX + 7, backgroundY + 7, Config.getSkin().getLabelColor()); + final int maxWidth = this.getBackgroundWidth() - 18 - this.font.width(this.getPlayer()) - (Config.getSettings().watch() ? 9 : 0); + this.font.draw(matrix, TextUtils.stripText(this.content.getTitle(), maxWidth, this.font), backgroundX + 7, backgroundY + 7, Config.getSkin().getLabelColor()); for(int i = 0; i < this.buttons.size(); i++) { @@ -220,12 +220,12 @@ public class GuiWorldHandler extends Container if(mouseX >= versionWidth && mouseY >= versionHeight) { - matrix.push(); + matrix.pushPose(); matrix.translate(versionWidth - 12, versionHeight + 12, 0); this.renderTooltip(matrix, new StringTextComponent(label), 0, 0); - matrix.pop(); + matrix.popPose(); } RenderSystem.disableBlend(); @@ -325,16 +325,16 @@ public class GuiWorldHandler extends Container @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - boolean focused = this.getListener() != null; + boolean focused = this.getFocused() != null; - if(focused && this.getListener() instanceof Widget) + if(focused && this.getFocused() instanceof Widget) { - focused = ((Widget) this.getListener()).isFocused(); + focused = ((Widget) this.getFocused()).isFocused(); } - if(!focused && KeyHandler.KEY_WORLD_HANDLER.matchesKey(keyCode, scanCode) && KeyHandler.KEY_WORLD_HANDLER.getKeyModifier().isActive(null)) + if(!focused && KeyHandler.KEY_WORLD_HANDLER.matches(keyCode, scanCode) && KeyHandler.KEY_WORLD_HANDLER.getKeyModifier().isActive(null)) { - Minecraft.getInstance().displayGuiScreen(null); + Minecraft.getInstance().setScreen(null); return true; } @@ -470,11 +470,11 @@ public class GuiWorldHandler extends Container return this.content; } - @Override - public boolean shouldCloseOnEsc() - { - return true; - } +// @Override +// public boolean shouldCloseOnEsc() +// { +// return true; +// } @Override public int getBackgroundWidth() @@ -491,6 +491,6 @@ public class GuiWorldHandler extends Container @Override public void bindBackground() { - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.backgroundTexture()); + Minecraft.getInstance().getTextureManager().bind(ResourceHelper.backgroundTexture()); } } \ No newline at end of file diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentAdvancements.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentAdvancements.java index 774feb4..bb013ad 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentAdvancements.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentAdvancements.java @@ -128,7 +128,7 @@ public class ContentAdvancements extends Content { CommandHelper.sendCommand(container.getPlayer(), this.builderAdvancement.build(EnumActionType.REVOKE)); })); - container.add(new GuiButtonBase(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.actions.reset").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.actions.reset").withStyle(TextFormatting.RED), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderAdvancement.build(EnumActionType.REVOKE, EnumMode.EVERYTHING))); })); diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcher.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcher.java index 60fa6e9..f618671 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcher.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcher.java @@ -48,7 +48,7 @@ public class ContentButcher extends Content public void initGui(Container container, int x, int y) { this.radiusField = new GuiTextFieldTooltip(x + 58, y, 114, 20, new TranslationTextComponent("gui.worldhandler.butcher.radius")); - this.radiusField.setValidator(string -> + this.radiusField.setFilter(string -> { if(string == null) { @@ -69,7 +69,7 @@ public class ContentButcher extends Content return true; }); - this.radiusField.setText(this.radius); + this.radiusField.setValue(this.radius); this.radiusField.setResponder(text -> { this.radius = text; @@ -119,15 +119,15 @@ public class ContentButcher extends Content public static void slaughter(String username, Collection> entities, int radius) { PlayerEntity player = Minecraft.getInstance().player; - World world = Minecraft.getInstance().world; + World world = Minecraft.getInstance().level; if(player != null && world != null) { - AxisAlignedBB aabb = new AxisAlignedBB(player.getPosition()).grow(radius); + AxisAlignedBB aabb = new AxisAlignedBB(player.blockPosition()).inflate(radius); for(EntityType entity : entities) { - List targets = world.getEntitiesWithinAABB(entity, aabb, Predicates.alwaysTrue()); + List targets = world.getEntities(entity, aabb, Predicates.alwaysTrue()); targets.removeIf(target -> player.equals(target)); if(!targets.isEmpty()) diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherPresets.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherPresets.java index a9881c0..40ac9ab 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherPresets.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherPresets.java @@ -45,12 +45,12 @@ public class ContentButcherPresets extends ContentChild container.add(new GuiButtonBase(x + 58, y, 114, 20, new TranslationTextComponent("gui.worldhandler.butcher.presets.passive_mobs"), () -> { - ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> !EntityClassification.MONSTER.equals(entity.getClassification()) && !EntityClassification.MISC.equals(entity.getClassification())).collect(Collectors.toList()), this.radius); + ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> !EntityClassification.MONSTER.equals(entity.getCategory()) && !EntityClassification.MISC.equals(entity.getCategory())).collect(Collectors.toList()), this.radius); ActionHelper.open(this.getParentContent()); })); container.add(new GuiButtonBase(x + 58, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.butcher.presets.hostile_mobs"), () -> { - ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> EntityClassification.MONSTER.equals(entity.getClassification())).collect(Collectors.toList()), this.radius); + ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> EntityClassification.MONSTER.equals(entity.getCategory())).collect(Collectors.toList()), this.radius); ActionHelper.open(this.getParentContent()); })); container.add(new GuiButtonBase(x + 58, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.butcher.presets.players"), () -> @@ -60,7 +60,7 @@ public class ContentButcherPresets extends ContentChild })); container.add(new GuiButtonBase(x + 58, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.butcher.presets.entities"), () -> { - ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> EntityClassification.MISC.equals(entity.getClassification()) && !EntityType.PLAYER.equals(entity)).collect(Collectors.toList()), this.radius); + ContentButcher.slaughter(container.getPlayer(), ForgeRegistries.ENTITIES.getValues().stream().filter(entity -> EntityClassification.MISC.equals(entity.getCategory()) && !EntityType.PLAYER.equals(entity)).collect(Collectors.toList()), this.radius); ActionHelper.open(this.getParentContent()); })); } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherSettings.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherSettings.java index 4808dfe..602638f 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherSettings.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentButcherSettings.java @@ -28,14 +28,14 @@ public class ContentButcherSettings extends ContentChild @Override public void initGui(Container container, int x, int y) { - List> list = ForgeRegistries.ENTITIES.getValues().stream().filter(EntityType::isSummonable).collect(Collectors.toList()); + List> list = ForgeRegistries.ENTITIES.getValues().stream().filter(EntityType::canSummon).collect(Collectors.toList()); MenuPageList> entities = new MenuPageList>(x, y, list, 114, 20, 3, container, new ILogicPageList>() { @Override public IFormattableTextComponent translate(EntityType item) { - return new TranslationTextComponent(item.getTranslationKey()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override 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 d24e415..9d16219 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java @@ -37,7 +37,7 @@ public class ContentChangeWorld extends ContentChild container.add(new GuiButtonBase(x + 116 / 2, y + 24, 232 / 2, 20, new TranslationTextComponent("gui.worldhandler.change_world.singleplayer"), () -> { IConnection connection = ContentChangeWorld.disconnect(); - Minecraft.getInstance().displayGuiScreen(new WorldSelectionScreen(new DummyScreen(() -> ContentChangeWorld.reconnect(connection)))); + Minecraft.getInstance().setScreen(new WorldSelectionScreen(new DummyScreen(() -> ContentChangeWorld.reconnect(connection)))); })); container.add(new GuiButtonBase(x + 116 / 2, y + 48, 232 / 2, 20, new TranslationTextComponent("gui.worldhandler.change_world.multiplayer"), () -> @@ -45,40 +45,40 @@ public class ContentChangeWorld extends ContentChild IConnection connection = ContentChangeWorld.disconnect(); DummyScreen dummy = new DummyScreen(() -> ContentChangeWorld.reconnect(connection)); - if(Minecraft.getInstance().gameSettings.skipMultiplayerWarning) + if(Minecraft.getInstance().options.skipMultiplayerWarning) { - Minecraft.getInstance().displayGuiScreen(new MultiplayerScreen(dummy)); + Minecraft.getInstance().setScreen(new MultiplayerScreen(dummy)); } else { - Minecraft.getInstance().displayGuiScreen(new MultiplayerWarningScreen(dummy)); + Minecraft.getInstance().setScreen(new MultiplayerWarningScreen(dummy)); } })); } private static IConnection disconnect() { - boolean isIntegrated = Minecraft.getInstance().isIntegratedServerRunning(); + boolean isIntegrated = Minecraft.getInstance().isLocalServer(); boolean isRealms = Minecraft.getInstance().isConnectedToRealms(); - ServerData data = Minecraft.getInstance().getCurrentServerData(); + ServerData data = Minecraft.getInstance().getCurrentServer(); if(isIntegrated) { - IntegratedServer integrated = Minecraft.getInstance().getIntegratedServer(); - String folder = integrated.anvilConverterForAnvilFile.getSaveName(); - DimensionGeneratorSettings dimensionGeneratorSettings = integrated.getServerConfiguration().getDimensionGeneratorSettings(); - WorldSettings worldSettings = integrated.getServerConfiguration().getWorldSettings(); + IntegratedServer integrated = Minecraft.getInstance().getSingleplayerServer(); + String folder = integrated.storageSource.getLevelId(); + DimensionGeneratorSettings dimensionGeneratorSettings = integrated.getWorldData().worldGenSettings(); + WorldSettings worldSettings = integrated.getWorldData().getLevelSettings(); - Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); - Minecraft.getInstance().unloadWorld(new DirtMessageScreen(new TranslationTextComponent("menu.savingLevel"))); + Minecraft.getInstance().level.disconnect(); + Minecraft.getInstance().clearLevel(new DirtMessageScreen(new TranslationTextComponent("menu.savingLevel"))); return new IntegratedConnection(folder, worldSettings, dimensionGeneratorSettings); } - if(Minecraft.getInstance().world != null) + if(Minecraft.getInstance().level != null) { - Minecraft.getInstance().world.sendQuittingDisconnectingPacket(); - Minecraft.getInstance().unloadWorld(); + Minecraft.getInstance().level.disconnect(); + Minecraft.getInstance().clearLevel(); } if(isRealms) @@ -94,19 +94,19 @@ public class ContentChangeWorld extends ContentChild if(connection == null) { RealmsBridgeScreen realmsbridge = new RealmsBridgeScreen(); - realmsbridge.func_231394_a_(new MainMenuScreen()); + realmsbridge.switchToRealms(new MainMenuScreen()); } else if(connection instanceof IntegratedConnection) { IntegratedConnection integrated = (IntegratedConnection) connection; - Minecraft.getInstance().createWorld(integrated.getFolder(), integrated.getWorldSettings(), DynamicRegistries.func_239770_b_(), integrated.getDimensionGeneratorSettings()); - Minecraft.getInstance().mouseHelper.grabMouse(); + Minecraft.getInstance().createLevel(integrated.getFolder(), integrated.getWorldSettings(), DynamicRegistries.builtin(), integrated.getDimensionGeneratorSettings()); + Minecraft.getInstance().mouseHandler.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(); + Minecraft.getInstance().setScreen(new ConnectingScreen(new MainMenuScreen(), Minecraft.getInstance(), dedicated.getData())); + Minecraft.getInstance().mouseHandler.grabMouse(); } } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCommandStack.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCommandStack.java index a7b37b2..a34d25b 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCommandStack.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCommandStack.java @@ -61,11 +61,11 @@ public class ContentCommandStack extends ContentChild this.builderCommandStack.setZ(new CoordinateDouble(0.0D, EnumType.GLOBAL)); this.builderCommandStack.setMotion(0.0D, 0.315D, 0.0D); this.builderCommandStack.setTime(1); - this.builderCommandStack.setBlockState(Blocks.ACTIVATOR_RAIL.getDefaultState()); + this.builderCommandStack.setBlockState(Blocks.ACTIVATOR_RAIL.defaultBlockState()); EntityNBT redstoneBlock = new EntityNBT(EntityType.FALLING_BLOCK.getRegistryName()); redstoneBlock.setTime(1); - redstoneBlock.setBlockState(Blocks.REDSTONE_BLOCK.getDefaultState()); + redstoneBlock.setBlockState(Blocks.REDSTONE_BLOCK.defaultBlockState()); this.builderCommandStack.addPassenger(redstoneBlock); this.addCommand(0); @@ -100,8 +100,8 @@ public class ContentCommandStack extends ContentChild int command = index + this.scroll; GuiTextFieldTooltip textfield = new GuiTextFieldTooltip(x, y + 24 * index, 232 - 48, 20, new TranslationTextComponent("gui.worldhandler.command_stack.command_n", command + 1)); - textfield.setValidator(Predicates.notNull()); - textfield.setText(command < this.getCommandCount() ? this.getCommand(command) : null); + textfield.setFilter(Predicates.notNull()); + textfield.setValue(command < this.getCommandCount() ? this.getCommand(command) : null); textfield.setResponder(text -> { this.setCommand(command, text); @@ -169,7 +169,7 @@ public class ContentCommandStack extends ContentChild container.add(this.buttonCopy = new GuiButtonBase(x, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.command_stack.copy_command"), () -> { - Minecraft.getInstance().keyboardListener.setClipboardString(this.builderCommandStack.toActualCommand()); + Minecraft.getInstance().keyboardHandler.setClipboard(this.builderCommandStack.toActualCommand()); })); container.add(buttonScrollUp = new GuiButtonIcon(x + 118, y + 72, 56, 20, EnumIcon.ARROW_UP, new TranslationTextComponent("gui.worldhandler.actions.move_up"), () -> { diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContainers.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContainers.java index ff3a9d8..49f253d 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContainers.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContainers.java @@ -32,24 +32,24 @@ public class ContentContainers extends Content { container.add(new GuiButtonBase(x, y + 96, 232, 20, new TranslationTextComponent("gui.worldhandler.generic.backToGame"), ActionHelper::backToGame)); - container.add(new GuiButtonBase(x + 24, y, 208, 20, Blocks.CRAFTING_TABLE.getTranslatedName(), () -> + container.add(new GuiButtonBase(x + 24, y, 208, 20, Blocks.CRAFTING_TABLE.getName(), () -> { BlockHelper.setBlockNearPlayer(container.getPlayer(), Blocks.CRAFTING_TABLE); ActionHelper.backToGame(); })); - container.add(new GuiButtonBase(x + 24, y + 24, 208, 20, Blocks.ENDER_CHEST.getTranslatedName(), () -> + container.add(new GuiButtonBase(x + 24, y + 24, 208, 20, Blocks.ENDER_CHEST.getName(), () -> { BlockHelper.setBlockNearPlayer(container.getPlayer(), Blocks.ENDER_CHEST); ActionHelper.backToGame(); })); - container.add(new GuiButtonBase(x + 24, y + 48, 208, 20, Blocks.ANVIL.getTranslatedName(), () -> + container.add(new GuiButtonBase(x + 24, y + 48, 208, 20, Blocks.ANVIL.getName(), () -> { BlockHelper.setBlockNearPlayer(container.getPlayer(), Blocks.ANVIL); ActionHelper.backToGame(); })); - container.add(new GuiButtonBase(x + 24, y + 72, 208, 20, Blocks.ENCHANTING_TABLE.getTranslatedName(), () -> + container.add(new GuiButtonBase(x + 24, y + 72, 208, 20, Blocks.ENCHANTING_TABLE.getName(), () -> { - double angle = Minecraft.getInstance().player.getHorizontalFacing().getHorizontalIndex() * Math.PI / 2; + double angle = Minecraft.getInstance().player.getDirection().get2DDataValue() * Math.PI / 2; double sin = Math.sin(angle); double cos = Math.cos(angle); diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContinue.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContinue.java index ebf8718..7d56978 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContinue.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentContinue.java @@ -43,19 +43,19 @@ public class ContentContinue extends ContentChild public void initGui(Container container, int x, int y) { this.commandField = new GuiTextFieldTooltip(x + 116 / 2, y + 12, 116, 20); - this.commandField.setFocused2(false); + this.commandField.setFocus(false); if(this.builder instanceof ICommandBuilderSyntax) { - this.commandField.setText(((ICommandBuilderSyntax) this.builder).toActualCommand()); + this.commandField.setValue(((ICommandBuilderSyntax) this.builder).toActualCommand()); } else { - this.commandField.setText(this.builder.toCommand()); + this.commandField.setValue(this.builder.toCommand()); } - this.commandField.setCursorPositionZero(); - this.commandField.setValidator(text -> text.equals(this.commandField.getText())); + this.commandField.moveCursorToStart(); + this.commandField.setFilter(text -> text.equals(this.commandField.getValue())); } @Override @@ -65,7 +65,7 @@ public class ContentContinue extends ContentChild container.add(new GuiButtonBase(x + 118, y + 96, 114, 20, new TranslationTextComponent("gui.worldhandler.generic.backToGame"), ActionHelper::backToGame)); container.add(this.commandField); - container.add(new GuiButtonBase(x + 116 / 2, y + 36, 116, 20, new TranslationTextComponent("gui.worldhandler.generic.yes").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 116 / 2, y + 36, 116, 20, new TranslationTextComponent("gui.worldhandler.generic.yes").withStyle(TextFormatting.RED), () -> { CommandHelper.sendCommand(container.getPlayer(), this.builder, this.special); ActionHelper.open(this.getParentContent()); diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCustomItem.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCustomItem.java index 7781f1a..9ac91eb 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCustomItem.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentCustomItem.java @@ -84,8 +84,8 @@ public class ContentCustomItem extends Content public void initGui(Container container, int x, int y) { this.itemField = new GuiTextFieldTooltip(x + 118, y, 114, 20, new TranslationTextComponent("gui.worldhandler.items.custom_item.start.item_id")); - this.itemField.setValidator(Predicates.notNull()); - this.itemField.setText(this.item); + this.itemField.setFilter(Predicates.notNull()); + this.itemField.setValue(this.item); this.itemField.setResponder(text -> { this.item = text; @@ -94,7 +94,7 @@ public class ContentCustomItem extends Content }); this.itemLore1Field = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.items.custom_item.start.lore_1")); - this.itemLore1Field.setValidator(Predicates.notNull()); + this.itemLore1Field.setFilter(Predicates.notNull()); this.itemLore1Field.setText(this.builderCutomItem.getLore1()); this.itemLore1Field.setResponder(text -> { @@ -103,7 +103,7 @@ public class ContentCustomItem extends Content }); this.itemLore2Field = new GuiTextFieldTooltip(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.items.custom_item.start.lore_2")); - this.itemLore2Field.setValidator(Predicates.notNull()); + this.itemLore2Field.setFilter(Predicates.notNull()); this.itemLore2Field.setText(this.builderCutomItem.getLore2()); this.itemLore2Field.setResponder(text -> { @@ -125,7 +125,7 @@ public class ContentCustomItem extends Content @Override public IFormattableTextComponent translate(Enchantment item) { - return new TranslationTextComponent(item.getName()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override @@ -170,7 +170,7 @@ public class ContentCustomItem extends Content @Override public IFormattableTextComponent translate(Attribute item) { - return new TranslationTextComponent(item.getAttributeName()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEditBlocks.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEditBlocks.java index 1fab14f..b8f42ec 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEditBlocks.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEditBlocks.java @@ -82,56 +82,56 @@ public class ContentEditBlocks extends Content public void initGui(Container container, int x, int y) { this.x1Field = new GuiTextFieldTooltip(x + 118, y, 55, 20); - this.x1Field.setValidator(this.getCoordinatePredicate("X1")); - this.x1Field.setText("X1: " + BlockHelper.getPos1().getX()); + this.x1Field.setFilter(this.getCoordinatePredicate("X1")); + this.x1Field.setValue("X1: " + BlockHelper.getPos1().getX()); this.x1Field.setResponder(text -> { BlockHelper.setPos1(BlockHelper.setX(BlockHelper.getPos1(), this.parseCoordinate(text))); }); this.y1Field = new GuiTextFieldTooltip(x + 118, y + 24, 55, 20); - this.y1Field.setValidator(this.getCoordinatePredicate("Y1")); - this.y1Field.setText("Y1: " + BlockHelper.getPos1().getY()); + this.y1Field.setFilter(this.getCoordinatePredicate("Y1")); + this.y1Field.setValue("Y1: " + BlockHelper.getPos1().getY()); this.y1Field.setResponder(text -> { BlockHelper.setPos1(BlockHelper.setY(BlockHelper.getPos1(), this.parseCoordinate(text))); }); this.z1Field = new GuiTextFieldTooltip(x + 118, y + 48, 55, 20); - this.z1Field.setValidator(this.getCoordinatePredicate("Z1")); - this.z1Field.setText("Z1: " + BlockHelper.getPos1().getZ()); + this.z1Field.setFilter(this.getCoordinatePredicate("Z1")); + this.z1Field.setValue("Z1: " + BlockHelper.getPos1().getZ()); this.z1Field.setResponder(text -> { BlockHelper.setPos1(BlockHelper.setZ(BlockHelper.getPos1(), this.parseCoordinate(text))); }); this.x2Field = new GuiTextFieldTooltip(x + 118 + 59, y, 55, 20); - this.x2Field.setValidator(this.getCoordinatePredicate("X2")); - this.x2Field.setText("X2: " + BlockHelper.getPos2().getX()); + this.x2Field.setFilter(this.getCoordinatePredicate("X2")); + this.x2Field.setValue("X2: " + BlockHelper.getPos2().getX()); this.x2Field.setResponder(text -> { BlockHelper.setPos2(BlockHelper.setX(BlockHelper.getPos2(), this.parseCoordinate(text))); }); this.y2Field = new GuiTextFieldTooltip(x + 118 + 59, y + 24, 55, 20); - this.y2Field.setValidator(this.getCoordinatePredicate("Y2")); - this.y2Field.setText("Y2: " + BlockHelper.getPos2().getY()); + this.y2Field.setFilter(this.getCoordinatePredicate("Y2")); + this.y2Field.setValue("Y2: " + BlockHelper.getPos2().getY()); this.y2Field.setResponder(text -> { BlockHelper.setPos2(BlockHelper.setY(BlockHelper.getPos2(), this.parseCoordinate(text))); }); this.z2Field = new GuiTextFieldTooltip(x + 118 + 59, y + 48, 55, 20); - this.z2Field.setValidator(this.getCoordinatePredicate("Z2")); - this.z2Field.setText("Z2: " + BlockHelper.getPos2().getZ()); + this.z2Field.setFilter(this.getCoordinatePredicate("Z2")); + this.z2Field.setValue("Z2: " + BlockHelper.getPos2().getZ()); this.z2Field.setResponder(text -> { BlockHelper.setPos2(BlockHelper.setZ(BlockHelper.getPos2(), this.parseCoordinate(text))); }); this.block1Field = new GuiTextFieldTooltip(x + 118, y, 114, 20, Page.FILL.equals(this.page) ? new TranslationTextComponent("gui.worldhandler.edit_blocks.fill.block_id_to_fill") : new TranslationTextComponent("gui.worldhandler.edit_blocks.replace.block_id_replace")); - this.block1Field.setValidator(Predicates.notNull()); - this.block1Field.setText(this.block1); + this.block1Field.setFilter(Predicates.notNull()); + this.block1Field.setValue(this.block1); this.block1Field.setResponder(text -> { this.block1 = text; @@ -140,8 +140,8 @@ public class ContentEditBlocks extends Content }); this.block2Field = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.edit_blocks.replace.block_id_place")); - this.block2Field.setValidator(Predicates.notNull()); - this.block2Field.setText(this.block2); + this.block2Field.setFilter(Predicates.notNull()); + this.block2Field.setValue(this.block2); this.block2Field.setResponder(text -> { this.block2 = text; @@ -150,8 +150,8 @@ public class ContentEditBlocks extends Content }); this.filterField = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.edit_blocks.clone.filter")); - this.filterField.setValidator(Predicates.notNull()); - this.filterField.setText(this.filter); + this.filterField.setFilter(Predicates.notNull()); + this.filterField.setValue(this.filter); this.filterField.setResponder(text -> { this.filter = text; diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEnchantment.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEnchantment.java index d555a06..418c832 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEnchantment.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentEnchantment.java @@ -45,7 +45,7 @@ public class ContentEnchantment extends Content @Override public IFormattableTextComponent translate(Enchantment item) { - return new TranslationTextComponent(item.getName()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentGamerules.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentGamerules.java index 20b7418..f4c2c4b 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentGamerules.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentGamerules.java @@ -55,9 +55,9 @@ public class ContentGamerules extends Content public void initGui(Container container, int x, int y) { this.valueField = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.generic.value")); - this.valueField.setValidator(Predicates.notNull()); - this.valueField.setText(this.value); - this.valueField.setCursorPositionEnd(); + this.valueField.setFilter(Predicates.notNull()); + this.valueField.setValue(this.value); + this.valueField.moveCursorToEnd(); this.valueField.setResponder(text -> { this.value = text; @@ -66,12 +66,12 @@ public class ContentGamerules extends Content Map> map = new HashMap>(); - GameRules.visitAll(new IRuleEntryVisitor() + GameRules.visitGameRuleTypes(new IRuleEntryVisitor() { @Override public > void visit(RuleKey rule, RuleType type) { - map.put(rule.getName(), type.createArgument(null).getType()); + map.put(rule.getId(), type.createArgument(null).getType()); } }); 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 f092f52..571b3cb 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMain.java @@ -57,13 +57,13 @@ public class ContentMain extends Content container.add(new GuiButtonBase(x, y + 96, 74, 20, new TranslationTextComponent("gui.worldhandler.change_world"), () -> ActionHelper.open(Contents.CHANGE_WORLD))); container.add(new GuiButtonBase(x + 78, y + 96, 76, 20, new TranslationTextComponent("gui.worldhandler.resourcepack"), () -> { - Minecraft.getInstance().gameSettings.saveOptions(); - Minecraft.getInstance().displayGuiScreen(new PackScreen(container, Minecraft.getInstance().getResourcePackList(), resourcePackList -> + Minecraft.getInstance().options.save(); + Minecraft.getInstance().setScreen(new PackScreen(container, Minecraft.getInstance().getResourcePackRepository(), resourcePackList -> { - OptionsScreen optionsScreen = new OptionsScreen(container, Minecraft.getInstance().gameSettings); + OptionsScreen optionsScreen = new OptionsScreen(container, Minecraft.getInstance().options); optionsScreen.init(Minecraft.getInstance(), 0, 0); - optionsScreen.func_241584_a_(resourcePackList); - }, Minecraft.getInstance().getFileResourcePacks(), new TranslationTextComponent("resourcePack.title"))); + optionsScreen.updatePackList(resourcePackList); + }, Minecraft.getInstance().getResourcePackDirectory(), new TranslationTextComponent("resourcePack.title"))); })); container.add(new GuiButtonBase(x + 158, y + 96, 74, 20, new TranslationTextComponent("gui.worldhandler.generic.backToGame"), ActionHelper::backToGame)); } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMultiplayer.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMultiplayer.java index 9627dbf..054886d 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMultiplayer.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentMultiplayer.java @@ -84,23 +84,23 @@ public class ContentMultiplayer extends Content public void initGui(Container container, int x, int y) { this.playerField = new GuiTextFieldTooltip(x + 118, y + this.page.getShift(), 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.username")); - this.playerField.setValidator(Predicates.notNull()); - this.playerField.setFocused2(false); - this.playerField.setText(this.builderKick.getPlayer()); - this.playerField.setMaxStringLength(16); + this.playerField.setFilter(Predicates.notNull()); + this.playerField.setFocus(false); + this.playerField.setValue(this.builderKick.getPlayer()); + this.playerField.setMaxLength(16); this.playerField.setResponder(text -> { - this.setPlayer(this.playerField.getText()); + this.setPlayer(this.playerField.getValue()); container.initButtons(); }); this.reasonField = new GuiTextFieldTooltip(x + 118, y + 24 + this.page.getShift(), 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.kick_ban.reason")); - this.reasonField.setValidator(Predicates.notNull()); - this.reasonField.setFocused2(false); - this.reasonField.setText(this.builderKick.getReason()); + this.reasonField.setFilter(Predicates.notNull()); + this.reasonField.setFocus(false); + this.reasonField.setValue(this.builderKick.getReason()); this.reasonField.setResponder(text -> { - this.setReason(this.reasonField.getText()); + this.setReason(this.reasonField.getValue()); container.initButtons(); }); } @@ -118,7 +118,7 @@ public class ContentMultiplayer extends Content container.add(new GuiButtonBase(x + 118, y + 96, 114, 20, new TranslationTextComponent("gui.worldhandler.generic.backToGame"), ActionHelper::backToGame)); - container.add(button1 = new GuiButtonBase(x, y, 114, 20, new StringTextComponent(I18n.format("gui.worldhandler.multiplayer.kick") + " / " + I18n.format("gui.worldhandler.multiplayer.ban")), () -> + container.add(button1 = new GuiButtonBase(x, y, 114, 20, new StringTextComponent(I18n.get("gui.worldhandler.multiplayer.kick") + " / " + I18n.get("gui.worldhandler.multiplayer.ban")), () -> { this.page = Page.KICK_AND_BAN; container.init(); @@ -157,7 +157,7 @@ public class ContentMultiplayer extends Content CommandHelper.sendCommand(container.getPlayer(), this.builderBan); })); - if(this.playerField.getText().isEmpty()) + if(this.playerField.getValue().isEmpty()) { button6.active = false; button7.active = false; @@ -173,7 +173,7 @@ public class ContentMultiplayer extends Content CommandHelper.sendCommand(container.getPlayer(), this.builderPardon); })); - if(this.playerField.getText().isEmpty()) + if(this.playerField.getValue().isEmpty()) { button6.active = false; } @@ -192,7 +192,7 @@ public class ContentMultiplayer extends Content CommandHelper.sendCommand(container.getPlayer(), this.builderDeop); })); - if(this.playerField.getText().isEmpty()) + if(this.playerField.getValue().isEmpty()) { button6.active = false; button7.active = false; @@ -210,11 +210,11 @@ public class ContentMultiplayer extends Content { CommandHelper.sendCommand(container.getPlayer(), this.builderSaveOn); })); - container.add(new GuiButtonTooltip(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.runtime.autosave", new TranslationTextComponent("gui.worldhandler.generic.off")).mergeStyle(TextFormatting.RED), new StringTextComponent(this.builderSaveOff.toActualCommand()), () -> + container.add(new GuiButtonTooltip(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.runtime.autosave", new TranslationTextComponent("gui.worldhandler.generic.off")).withStyle(TextFormatting.RED), new StringTextComponent(this.builderSaveOff.toActualCommand()), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderSaveOff)); })); - container.add(new GuiButtonTooltip(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.runtime.stop_server").mergeStyle(TextFormatting.RED), new StringTextComponent(this.builderStop.toActualCommand()), () -> + container.add(new GuiButtonTooltip(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.multiplayer.runtime.stop_server").withStyle(TextFormatting.RED), new StringTextComponent(this.builderStop.toActualCommand()), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderStop)); })); @@ -247,7 +247,7 @@ public class ContentMultiplayer extends Content CommandHelper.sendCommand(container.getPlayer(), this.builderWhitelist.build(EnumMode.RELOAD)); })); - if(this.playerField.getText().isEmpty()) + if(this.playerField.getValue().isEmpty()) { button6.active = false; button7.active = false; 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 1ce3615..09275bd 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentNoteEditor.java @@ -65,7 +65,7 @@ public class ContentNoteEditor extends Content if(this.isActive) { BlockPos pos = this.builderNoteEditor.getBlockPos(); - SoundEvent sound = this.getSoundEvent(pos.down()); + SoundEvent sound = this.getSoundEvent(pos.below()); container.add(new GuiButtonPiano(x - 3 + 15, y, 14, 92, new TranslationTextComponent("gui.worldhandler.blocks.note_block_editor.g"), sound, 0.53F, Type.NORMAL, () -> { @@ -182,7 +182,7 @@ public class ContentNoteEditor extends Content if(this.isActive) { RenderUtils.color(1.0F, 1.0F, 1.0F); - Minecraft.getInstance().getTextureManager().bindTexture(NOTE); + Minecraft.getInstance().getTextureManager().bind(NOTE); container.blit(matrix, x - 1, y - 1, 0, 0, 8, 59); container.blit(matrix, x - 1, y - 1 + 59, 0, 59, 13, 35); @@ -197,26 +197,26 @@ public class ContentNoteEditor extends Content { float scale = 4; - matrix.push(); + matrix.pushPose(); matrix.translate(container.width / 2 - 8 * scale, container.height / 2 - 15 - 8 * scale, 0); matrix.scale(scale, scale, scale); RenderUtils.renderItemIntoGUI(matrix, new ItemStack(Blocks.NOTE_BLOCK), 0, 0); - matrix.pop(); + matrix.popPose(); - TranslationTextComponent text = new TranslationTextComponent("gui.worldhandler.blocks.note_block_editor.look_at_note_block", KeyHandler.KEY_WORLD_HANDLER.func_238171_j_()); - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; - fontRenderer.func_243248_b(matrix, text, x + 116 - fontRenderer.getStringPropertyWidth(text) / 2, y + 70, Config.getSkin().getLabelColor()); + TranslationTextComponent text = new TranslationTextComponent("gui.worldhandler.blocks.note_block_editor.look_at_note_block", KeyHandler.KEY_WORLD_HANDLER.getTranslatedKeyMessage()); + FontRenderer fontRenderer = Minecraft.getInstance().font; + fontRenderer.draw(matrix, text, x + 116 - fontRenderer.width(text) / 2, y + 70, Config.getSkin().getLabelColor()); } } private SoundEvent getSoundEvent(BlockPos blockPos) { - World world = Minecraft.getInstance().world; + World world = Minecraft.getInstance().level; if(world != null) { - return NoteBlockInstrument.byState(world.getBlockState(blockPos)).getSound(); + return NoteBlockInstrument.byState(world.getBlockState(blockPos)).getSoundEvent(); } return null; 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 3abcde0..f01f578 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPlayer.java @@ -123,8 +123,8 @@ public class ContentPlayer extends Content if(player != null) { - BlockPos position = player.getPosition(); - Minecraft.getInstance().keyboardListener.setClipboardString(position.getX() + " " + position.getY() + " " + position.getZ()); + BlockPos position = player.blockPosition(); + Minecraft.getInstance().keyboardHandler.setClipboard(position.getX() + " " + position.getY() + " " + position.getZ()); } })); } @@ -132,19 +132,19 @@ public class ContentPlayer extends Content { button4.active = false; - container.add(new GuiButtonBase(x + 118, y, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.set_spawn").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 118, y, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.set_spawn").withStyle(TextFormatting.RED), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderSpawnpoint)); })); - container.add(new GuiButtonBase(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.set_global_spawn").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.set_global_spawn").withStyle(TextFormatting.RED), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderSetworldspawn)); })); - container.add(new GuiButtonBase(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.kill").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.kill").withStyle(TextFormatting.RED), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderKill)); })); - container.add(new GuiButtonBase(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.clear_inventory").mergeStyle(TextFormatting.RED), () -> + container.add(new GuiButtonBase(x + 118, y + 72, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.player.miscellaneous.clear_inventory").withStyle(TextFormatting.RED), () -> { ActionHelper.open(Contents.CONTINUE.withBuilder(this.builderClear)); })); @@ -158,14 +158,14 @@ public class ContentPlayer extends Content if(player != null) { - BlockPos position = player.getPosition(); + BlockPos position = player.blockPosition(); - this.posXField.setText("X: " + position.getX()); - this.posYField.setText("Y: " + position.getY()); - this.posZField.setText("Z: " + position.getZ()); - this.scoreField.setText(I18n.format("gui.worldhandler.entities.player.score") + ": " + player.getScore()); - this.coinsField.setText(I18n.format("gui.worldhandler.entities.player.score.experience") + ": " + player.experienceLevel + "L"); - this.xpField.setText(I18n.format("gui.worldhandler.entities.player.score.experience_coins") + ": " + player.experienceTotal); + this.posXField.setValue("X: " + position.getX()); + this.posYField.setValue("Y: " + position.getY()); + this.posZField.setValue("Z: " + position.getZ()); + this.scoreField.setValue(I18n.get("gui.worldhandler.entities.player.score") + ": " + player.getScore()); + this.coinsField.setValue(I18n.get("gui.worldhandler.entities.player.score.experience") + ": " + player.experienceLevel + "L"); + this.xpField.setValue(I18n.get("gui.worldhandler.entities.player.score.experience_coins") + ": " + player.totalExperience); } } @@ -176,13 +176,13 @@ public class ContentPlayer extends Content { int xPos = x + 175; int yPos = y + 82; - int playerNameWidth = Minecraft.getInstance().fontRenderer.getStringPropertyWidth(Minecraft.getInstance().player.getName()) / 2; + int playerNameWidth = Minecraft.getInstance().font.width(Minecraft.getInstance().player.getName()) / 2; AbstractGui.fill(matrix, container.width / 2 - playerNameWidth - 1 + 59, yPos - 74, container.width / 2 + playerNameWidth + 1 + 59, yPos - 65, 0x3F000000); - Minecraft.getInstance().fontRenderer.func_243248_b(matrix, Minecraft.getInstance().player.getName(), container.width / 2 - playerNameWidth + 59, yPos - 73, 0xE0E0E0); + Minecraft.getInstance().font.draw(matrix, Minecraft.getInstance().player.getName(), container.width / 2 - playerNameWidth + 59, yPos - 73, 0xE0E0E0); RenderUtils.color(1.0F, 1.0F, 1.0F, 1.0F); - InventoryScreen.drawEntityOnScreen(xPos, yPos, 30, xPos - mouseX, yPos - mouseY - 44, Minecraft.getInstance().player); + InventoryScreen.renderEntityInInventory(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 c5e53ef..dff7bb9 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentPotions.java @@ -68,7 +68,7 @@ public class ContentPotions extends ContentChild @Override public IFormattableTextComponent translate(Effect item) { - return new TranslationTextComponent(item.getName()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentRecipes.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentRecipes.java index bd0005b..16d1242 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentRecipes.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentRecipes.java @@ -41,9 +41,9 @@ public class ContentRecipes extends Content @Override public void initGui(Container container, int x, int y) { - List> recipes = Minecraft.getInstance().player.getRecipeBook().getRecipes().stream() + List> recipes = Minecraft.getInstance().player.getRecipeBook().getCollections().stream() .flatMap(recipe -> recipe.getRecipes().stream()) - .filter(recipe -> !recipe.isDynamic()) + .filter(recipe -> !recipe.isSpecial()) .collect(Collectors.toList()); MenuPageList> list = new MenuPageList>(x, y, recipes, 114, 20, 3, container, new ILogicPageList>() @@ -51,9 +51,9 @@ public class ContentRecipes extends Content @Override public IFormattableTextComponent translate(IRecipe item) { - if(!item.getRecipeOutput().equals(ItemStack.EMPTY)) + if(!item.getResultItem().equals(ItemStack.EMPTY)) { - return (IFormattableTextComponent) item.getRecipeOutput().getDisplayName(); + return (IFormattableTextComponent) item.getResultItem().getHoverName(); } return new StringTextComponent(item.getId().toString()); diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardObjectives.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardObjectives.java index 03364f2..05e3f37 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardObjectives.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardObjectives.java @@ -52,8 +52,8 @@ public class ContentScoreboardObjectives extends ContentScoreboard public void initGui(Container container, int x, int y) { this.objectField = new GuiTextFieldTooltip(x + 118, y + this.page.getShift(), 114, 20, new TranslationTextComponent("gui.worldhandler.scoreboard.objectives.objective")); - this.objectField.setValidator(Predicates.notNull()); - this.objectField.setText(ContentScoreboard.getObjective()); + this.objectField.setFilter(Predicates.notNull()); + this.objectField.setValue(ContentScoreboard.getObjective()); this.objectField.setResponder(text -> { ContentScoreboard.setObjective(text); @@ -102,12 +102,12 @@ public class ContentScoreboardObjectives extends ContentScoreboard String translation = "stat." + key; - if(!translation.equals(I18n.format(translation))) + if(!translation.equals(I18n.get(translation))) { return new TranslationTextComponent(translation); } - if(Arrays.stream(TextFormatting.values()).map(TextFormatting::getFriendlyName).anyMatch(Predicates.equalTo(key))) + if(Arrays.stream(TextFormatting.values()).map(TextFormatting::getName).anyMatch(Predicates.equalTo(key))) { return new TranslationTextComponent("gui.worldhandler.color." + key); } @@ -141,7 +141,7 @@ public class ContentScoreboardObjectives extends ContentScoreboard @Nullable private ResourceLocation makeResourceLocation(String key) { - return ResourceLocation.tryCreate(key.replace(".", ":")); + return ResourceLocation.tryParse(key.replace(".", ":")); } @Nullable diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardPlayers.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardPlayers.java index ef4a2f0..cd7b76b 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardPlayers.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardPlayers.java @@ -80,8 +80,8 @@ public class ContentScoreboardPlayers extends ContentScoreboard public void initGui(Container container, int x, int y) { this.objectField = new GuiTextFieldTooltip(x + 118, y, 114, 20, new TranslationTextComponent("gui.worldhandler.scoreboard.objectives.objective")); - this.objectField.setValidator(Predicates.notNull()); - this.objectField.setText(ContentScoreboard.getObjective()); + this.objectField.setFilter(Predicates.notNull()); + this.objectField.setValue(ContentScoreboard.getObjective()); this.objectField.setResponder(text -> { ContentScoreboard.setObjective(text); @@ -91,8 +91,8 @@ public class ContentScoreboardPlayers extends ContentScoreboard }); this.tagField = new GuiTextFieldTooltip(x + 118, y + 12, 114, 20, new TranslationTextComponent("gui.worldhandler.scoreboard.players.tag")); - this.tagField.setValidator(string -> string != null && !string.contains(" ")); - this.tagField.setText(this.tag); + this.tagField.setFilter(string -> string != null && !string.contains(" ")); + this.tagField.setValue(this.tag); this.tagField.setResponder(text -> { this.tag = text; diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardTeams.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardTeams.java index 94cc8c3..b19d6ae 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardTeams.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentScoreboardTeams.java @@ -46,8 +46,8 @@ public class ContentScoreboardTeams extends ContentScoreboard public void initGui(Container container, int x, int y) { this.teamField = new GuiTextFieldTooltip(x + 118, y + this.page.getShift(), 114, 20, new TranslationTextComponent("gui.worldhandler.scoreboard.team.team")); - this.teamField.setValidator(Predicates.notNull()); - this.teamField.setText(this.team); + this.teamField.setFilter(Predicates.notNull()); + this.teamField.setValue(this.team); this.teamField.setResponder(text -> { this.team = text; @@ -68,7 +68,7 @@ public class ContentScoreboardTeams extends ContentScoreboard } else if(depth == 1) { - if(Arrays.stream(TextFormatting.values()).map(TextFormatting::getFriendlyName).anyMatch(Predicates.equalTo(key))) + if(Arrays.stream(TextFormatting.values()).map(TextFormatting::getName).anyMatch(Predicates.equalTo(key))) { return new TranslationTextComponent("gui.worldhandler.color." + key); } @@ -125,12 +125,12 @@ public class ContentScoreboardTeams extends ContentScoreboard this.page = Page.ADD; container.init(); })); - container.add(button2 = new GuiButtonBase(x, y + 24, 114, 20, new StringTextComponent(I18n.format("gui.worldhandler.scoreboard.team.join") + " / " + I18n.format("gui.worldhandler.scoreboard.team.leave")), () -> + container.add(button2 = new GuiButtonBase(x, y + 24, 114, 20, new StringTextComponent(I18n.get("gui.worldhandler.scoreboard.team.join") + " / " + I18n.get("gui.worldhandler.scoreboard.team.leave")), () -> { this.page = Page.JOIN_OR_LEAVE; container.init(); })); - container.add(button3 = new GuiButtonBase(x, y + 48, 114, 20, new StringTextComponent(I18n.format("gui.worldhandler.scoreboard.team.remove") + " / " + I18n.format("gui.worldhandler.scoreboard.team.empty")), () -> + container.add(button3 = new GuiButtonBase(x, y + 48, 114, 20, new StringTextComponent(I18n.get("gui.worldhandler.scoreboard.team.remove") + " / " + I18n.get("gui.worldhandler.scoreboard.team.empty")), () -> { this.page = Page.REMOVE_OR_EMPTY; container.init(); 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 2a97a8c..83aad1a 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSettings.java @@ -89,7 +89,7 @@ public class ContentSettings extends ContentChild container.add(settings); this.valueField = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.generic.value")); - this.valueField.setValidator(string -> + this.valueField.setFilter(string -> { if(string == null) { @@ -144,12 +144,12 @@ public class ContentSettings extends ContentChild else if(this.setting instanceof IntegerSetting) { IntegerSetting setting = (IntegerSetting) this.setting; - this.valueField.setText(String.valueOf(setting.get())); + this.valueField.setValue(String.valueOf(setting.get())); container.add(this.valueField); container.add(new GuiButtonBase(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.actions.set"), () -> { - String text = this.valueField.getText(); + String text = this.valueField.getValue(); if(text.isEmpty()) { 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 adf9947..c40505c 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSignEditor.java @@ -62,9 +62,9 @@ public class ContentSignEditor extends Content if(this.isActive) { this.commandField = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20, new TranslationTextComponent("gui.worldhandler.blocks.sign_editor.commmand")); - this.commandField.setValidator(Predicates.notNull()); - this.commandField.setText(this.builderSignEditor.getCommand(this.selectedLine)); - this.commandField.setCursorPositionEnd(); + this.commandField.setFilter(Predicates.notNull()); + this.commandField.setValue(this.builderSignEditor.getCommand(this.selectedLine)); + this.commandField.moveCursorToEnd(); this.commandField.setResponder(text -> { this.builderSignEditor.setCommand(this.selectedLine, text); @@ -76,7 +76,7 @@ public class ContentSignEditor extends Content @Override public boolean validate(String text) { - return Minecraft.getInstance().fontRenderer.getStringWidth(text) <= 90; + return Minecraft.getInstance().font.width(text) <= 90; } @Override @@ -180,16 +180,16 @@ public class ContentSignEditor extends Content { float scale = 4; - matrix.push(); + matrix.pushPose(); matrix.translate(container.width / 2 - 8.5F * scale, container.height / 2 - 15 - 8.5F * scale, 0); matrix.scale(scale, scale, scale); RenderUtils.renderItemIntoGUI(matrix, new ItemStack(Items.OAK_SIGN), 0, 0); - matrix.pop(); + matrix.popPose(); - TranslationTextComponent text = new TranslationTextComponent("gui.worldhandler.blocks.sign_editor.look_at_sign", KeyHandler.KEY_WORLD_HANDLER.func_238171_j_()); - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; - fontRenderer.func_243248_b(matrix, text, x + 116 - fontRenderer.getStringPropertyWidth(text) / 2, y + 70, Config.getSkin().getLabelColor()); + TranslationTextComponent text = new TranslationTextComponent("gui.worldhandler.blocks.sign_editor.look_at_sign", KeyHandler.KEY_WORLD_HANDLER.getTranslatedKeyMessage()); + FontRenderer fontRenderer = Minecraft.getInstance().font; + fontRenderer.draw(matrix, text, x + 116 - fontRenderer.width(text) / 2, y + 70, Config.getSkin().getLabelColor()); } } 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 a4a7100..5a2cb9b 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentSummon.java @@ -158,8 +158,8 @@ public class ContentSummon extends Content public void initGui(Container container, int x, int y) { this.mobField = new GuiTextFieldTooltip(x + 118, y, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.summon.start.mob_id")); - this.mobField.setValidator(Predicates.notNull()); - this.mobField.setText(this.mob); + this.mobField.setFilter(Predicates.notNull()); + this.mobField.setValue(this.mob); this.mobField.setResponder(text -> { this.mob = text; @@ -168,8 +168,8 @@ public class ContentSummon extends Content }); this.nbtField = new GuiTextFieldTooltip(x + 118, y + 48, 114, 20, new TranslationTextComponent("gui.worldhandler.entities.summon.start.custom_nbt")); - this.nbtField.setValidator(Predicates.notNull()); - this.nbtField.setText(this.nbt); + this.nbtField.setFilter(Predicates.notNull()); + this.nbtField.setValue(this.nbt); this.nbtField.setResponder(text -> { this.nbt = text; @@ -209,7 +209,7 @@ public class ContentSummon extends Content @Override public IFormattableTextComponent translate(Attribute item) { - return new TranslationTextComponent(item.getAttributeName()); + return new TranslationTextComponent(item.getDescriptionId()); } @Override @@ -316,7 +316,7 @@ public class ContentSummon extends Content { Effect potion = ForgeRegistries.POTIONS.getValue(location); - if(!potion.equals(Effects.INSTANT_DAMAGE) && !potion.equals(Effects.INSTANT_HEALTH)) + if(!potion.equals(Effects.HARM) && !potion.equals(Effects.HEAL)) { if(this.potionPage == 0) { @@ -330,7 +330,7 @@ public class ContentSummon extends Content if(count == this.potionPage) { - container.add(new GuiSlider(x + 118, y, 114, 20, 0, Config.getSliders().getMaxSummonPotionAmplifier(), 0, container, new LogicSliderSimple("amplifier" + potion.getRegistryName(), new TranslationTextComponent(potion.getName()), value -> + container.add(new GuiSlider(x + 118, y, 114, 20, 0, Config.getSliders().getMaxSummonPotionAmplifier(), 0, container, new LogicSliderSimple("amplifier" + potion.getRegistryName(), new TranslationTextComponent(potion.getDescriptionId()), value -> { this.builderSummon.setAmplifier(potion, value.byteValue()); }))); @@ -429,12 +429,12 @@ public class ContentSummon extends Content } else if(Page.POTIONS.equals(this.page)) { - Minecraft.getInstance().fontRenderer.drawString(matrix, (this.potionPage + 1) + "/" + (ForgeRegistries.POTIONS.getKeys().size() - 2), x + 118, y - 11, Config.getSkin().getHeadlineColor()); + Minecraft.getInstance().font.draw(matrix, (this.potionPage + 1) + "/" + (ForgeRegistries.POTIONS.getKeys().size() - 2), x + 118, y - 11, Config.getSkin().getHeadlineColor()); } else if(Page.EQUIPMENT.equals(this.page)) { RenderUtils.color(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getInstance().getTextureManager().bindTexture(new ResourceLocation("textures/gui/container/beacon.png")); + Minecraft.getInstance().getTextureManager().bind(new ResourceLocation("textures/gui/container/beacon.png")); container.setBlitOffset(0); for(int i = 0; i < 4; i++) @@ -458,7 +458,7 @@ public class ContentSummon extends Content private List sortedPotions() { return ForgeRegistries.POTIONS.getKeys().stream() - .sorted((a, b) -> I18n.format(ForgeRegistries.POTIONS.getValue(a).getName()).compareTo(I18n.format(ForgeRegistries.POTIONS.getValue(b).getName()))) + .sorted((a, b) -> I18n.get(ForgeRegistries.POTIONS.getValue(a).getDescriptionId()).compareTo(I18n.get(ForgeRegistries.POTIONS.getValue(b).getDescriptionId()))) .collect(Collectors.toList()); } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentUsercontent.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentUsercontent.java index cb9494a..bd8a710 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentUsercontent.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentUsercontent.java @@ -153,7 +153,7 @@ public class ContentUsercontent extends Content { if(label.getVisible() == null || label.getVisible().eval(this.engineAdapter)) { - container.getMinecraft().fontRenderer.func_243248_b(matrix, TextUtils.formatNonnull(label.getText()), label.getX() + x, label.getY() + y, label.getColor()); + container.getMinecraft().font.draw(matrix, TextUtils.formatNonnull(label.getText()), label.getX() + x, label.getY() + y, label.getColor()); } } } @@ -257,14 +257,14 @@ public class ContentUsercontent extends Content private void printError(String type, int index, Throwable e) { ITextComponent message = new StringTextComponent(TextFormatting.RED + "<" + Main.NAME + ":" + this.id + ":" + type + ":" + index + "> " + e.getMessage()); - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.CHAT, message, Util.DUMMY_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.CHAT, message, Util.NIL_UUID); } private void updateTextfields() { for(VisibleActiveObject visObj : this.textfields.values()) { - visObj.getObject().setEnabled(visObj.isEnabled(this.engineAdapter)); + visObj.getObject().setEditable(visObj.isEnabled(this.engineAdapter)); visObj.getObject().setVisible(visObj.isVisible(this.engineAdapter)); } } diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentWorldInfo.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentWorldInfo.java index 9f3051c..4cf51ce 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentWorldInfo.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentWorldInfo.java @@ -41,24 +41,24 @@ public class ContentWorldInfo extends Content public void initGui(Container container, int x, int y) { World world = ContentWorldInfo.getSidedWorld(); - IntegratedServer server = Minecraft.getInstance().getIntegratedServer(); + IntegratedServer server = Minecraft.getInstance().getSingleplayerServer(); this.posXField = new GuiTextFieldTooltip(x + 118, y + 12, 114, 20); - this.posXField.setText(I18n.format("gui.worldhandler.world_info.start.spawn") + " X: " + ContentWorldInfo.format(world, object -> object.getWorldInfo().getSpawnX())); + this.posXField.setValue(I18n.get("gui.worldhandler.world_info.start.spawn") + " X: " + ContentWorldInfo.format(world, object -> object.getLevelData().getXSpawn())); this.posYField = new GuiTextFieldTooltip(x + 118, y + 36, 114, 20); - this.posYField.setText(I18n.format("gui.worldhandler.world_info.start.spawn") + " Y: " + ContentWorldInfo.format(world, object -> object.getWorldInfo().getSpawnY())); + this.posYField.setValue(I18n.get("gui.worldhandler.world_info.start.spawn") + " Y: " + ContentWorldInfo.format(world, object -> object.getLevelData().getYSpawn())); this.posZField = new GuiTextFieldTooltip(x + 118, y + 60, 114, 20); - this.posZField.setText(I18n.format("gui.worldhandler.world_info.start.spawn") + " Z: " + ContentWorldInfo.format(world, object -> object.getWorldInfo().getSpawnZ())); + this.posZField.setValue(I18n.get("gui.worldhandler.world_info.start.spawn") + " Z: " + ContentWorldInfo.format(world, object -> object.getLevelData().getZSpawn())); this.worldField = new GuiTextFieldTooltip(x + 118, y + 12, 114, 20); - this.worldField.setText(I18n.format("gui.worldhandler.world_info.world.name") + ": " + ContentWorldInfo.format(server, object -> object.getServerConfiguration().getWorldName())); + this.worldField.setValue(I18n.get("gui.worldhandler.world_info.world.name") + ": " + ContentWorldInfo.format(server, object -> object.getWorldData().getLevelName())); this.seedField = new GuiTextFieldTooltip(x + 118, y + 36, 114, 20); - this.seedField.setText(I18n.format("gui.worldhandler.world_info.world.seed") + ": " + ContentWorldInfo.format(server, object -> object.func_241755_D_().getSeed())); - this.seedField.setValidator(string -> string.equals(this.seedField.getText())); - this.seedField.setCursorPositionZero(); + this.seedField.setValue(I18n.get("gui.worldhandler.world_info.world.seed") + ": " + ContentWorldInfo.format(server, object -> object.overworld().getSeed())); + this.seedField.setFilter(string -> string.equals(this.seedField.getValue())); + this.seedField.moveCursorToStart(); this.currentTimeField = new GuiTextFieldTooltip(x + 118, y + 24, 114, 20); this.updateCurrentTime(); @@ -100,12 +100,12 @@ public class ContentWorldInfo extends Content else if(Page.WORLD.equals(this.page)) { GuiButtonBase seed; - IntegratedServer server = Minecraft.getInstance().getIntegratedServer(); + IntegratedServer server = Minecraft.getInstance().getSingleplayerServer(); world.active = false; container.add(seed = new GuiButtonBase(x + 118, y + 60, 114, 20, new TranslationTextComponent("gui.worldhandler.world_info.world.copy_seed"), () -> { - Minecraft.getInstance().keyboardListener.setClipboardString(String.valueOf(server.func_241755_D_().getSeed())); + Minecraft.getInstance().keyboardHandler.setClipboard(String.valueOf(server.overworld().getSeed())); })); seed.active = server != null; @@ -147,21 +147,21 @@ public class ContentWorldInfo extends Content private void updateCurrentTime() { - World world = Minecraft.getInstance().world; + World world = Minecraft.getInstance().level; if(world != null) { - this.currentTimeField.setText(I18n.format("gui.worldhandler.world_info.statistics.world_time") + ": " + TextUtils.formatWorldTime(world.getWorldInfo().getDayTime())); + this.currentTimeField.setValue(I18n.get("gui.worldhandler.world_info.statistics.world_time") + ": " + TextUtils.formatWorldTime(world.getLevelData().getDayTime())); } } private void updateTotalTime() { - World world = Minecraft.getInstance().world; + World world = Minecraft.getInstance().level; if(world != null) { - this.totalTimeField.setText(I18n.format("gui.worldhandler.world_info.statistics.played") + ": " + TextUtils.formatTotalTime(world.getWorldInfo().getGameTime())); + this.totalTimeField.setValue(I18n.get("gui.worldhandler.world_info.statistics.played") + ": " + TextUtils.formatTotalTime(world.getLevelData().getGameTime())); } } @@ -172,17 +172,17 @@ public class ContentWorldInfo extends Content return String.valueOf(function.apply(object)); } - return I18n.format("gui.worldhandler.world_info.n_a"); + return I18n.get("gui.worldhandler.world_info.n_a"); } private static World getSidedWorld() { - if(Minecraft.getInstance().isSingleplayer()) + if(Minecraft.getInstance().isLocalServer()) { - return Minecraft.getInstance().getIntegratedServer().func_241755_D_(); + return Minecraft.getInstance().getSingleplayerServer().overworld(); } - return Minecraft.getInstance().world; + return Minecraft.getInstance().level; } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/menu/impl/ILogicMapped.java b/src/main/java/exopandora/worldhandler/gui/menu/impl/ILogicMapped.java index 2ef44d5..eebcc48 100644 --- a/src/main/java/exopandora/worldhandler/gui/menu/impl/ILogicMapped.java +++ b/src/main/java/exopandora/worldhandler/gui/menu/impl/ILogicMapped.java @@ -18,7 +18,7 @@ public interface ILogicMapped extends ILogic if(tooltip != null) { - return tooltip.appendString(String.format(" (%d/%d)", index, max)); + return tooltip.append(String.format(" (%d/%d)", index, max)); } return (IFormattableTextComponent) StringTextComponent.EMPTY; diff --git a/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuColorField.java b/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuColorField.java index 5700e27..6223f7d 100644 --- a/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuColorField.java +++ b/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuColorField.java @@ -67,9 +67,9 @@ public class MenuColorField extends Menu public void initGui(Container container) { this.textField = new GuiTextFieldTooltip(this.x + 118, this.y, 114, 20, new TranslationTextComponent(this.translationKey)); - this.textField.setValidator(this.logic::validate); - this.textField.setTextFormatter(this.string::formatter); - this.textField.setText(this.string.getUnformattedComponentText()); + this.textField.setFilter(this.logic::validate); + this.textField.setFormatter(this.string::formatter); + this.textField.setValue(this.string.getContents()); this.textField.setResponder(text -> { this.string.setText(text); @@ -91,7 +91,7 @@ public class MenuColorField extends Menu @Override public IFormattableTextComponent translate(TextFormatting item) { - return new TranslationTextComponent("gui.worldhandler.color").mergeStyle(item).appendString(": ").append(new TranslationTextComponent("gui.worldhandler.color." + item.getFriendlyName())); + return new TranslationTextComponent("gui.worldhandler.color").withStyle(item).append(": ").append(new TranslationTextComponent("gui.worldhandler.color." + item.getName())); } @Override @@ -109,7 +109,7 @@ public class MenuColorField extends Menu @Override public void onClick(TextFormatting item) { - MenuColorField.this.string.mergeStyle(item); + MenuColorField.this.string.withStyle(item); } @Override @@ -119,29 +119,29 @@ public class MenuColorField extends Menu } })); - container.add(new GuiButtonBase(this.x + 118, this.y + 48, 20, 20, new StringTextComponent("I").setStyle(Style.EMPTY.setItalic(this.string.getStyle().getItalic())), () -> + container.add(new GuiButtonBase(this.x + 118, this.y + 48, 20, 20, new StringTextComponent("I").setStyle(Style.EMPTY.withItalic(this.string.getStyle().isItalic())), () -> { - this.string.setStyle(this.string.getStyle().setItalic(!this.string.getStyle().getItalic())); + this.string.setStyle(this.string.getStyle().withItalic(!this.string.getStyle().isItalic())); container.init(); })); - container.add(new GuiButtonBase(this.x + 118 + 24 - 1, this.y + 48, 20, 20, new StringTextComponent("B").setStyle(Style.EMPTY.setBold(this.string.getStyle().getBold())), () -> + container.add(new GuiButtonBase(this.x + 118 + 24 - 1, this.y + 48, 20, 20, new StringTextComponent("B").setStyle(Style.EMPTY.withBold(this.string.getStyle().isBold())), () -> { - this.string.setStyle(this.string.getStyle().setItalic(!this.string.getStyle().getBold())); + this.string.setStyle(this.string.getStyle().withItalic(!this.string.getStyle().isBold())); container.init(); })); - container.add(new GuiButtonBase(this.x + 118 + 24 * 2 - 1, this.y + 48, 20, 20, new StringTextComponent("U").setStyle(Style.EMPTY.setUnderlined(this.string.getStyle().getUnderlined())), () -> + container.add(new GuiButtonBase(this.x + 118 + 24 * 2 - 1, this.y + 48, 20, 20, new StringTextComponent("U").setStyle(Style.EMPTY.setUnderlined(this.string.getStyle().isUnderlined())), () -> { - this.string.setStyle(this.string.getStyle().setUnderlined(!this.string.getStyle().getUnderlined())); + this.string.setStyle(this.string.getStyle().setUnderlined(!this.string.getStyle().isUnderlined())); container.init(); })); - container.add(new GuiButtonBase(this.x + 118 + 24 * 3 - 1, this.y + 48, 20, 20, new StringTextComponent("S").setStyle(Style.EMPTY.setStrikethrough(this.string.getStyle().getStrikethrough())), () -> + container.add(new GuiButtonBase(this.x + 118 + 24 * 3 - 1, this.y + 48, 20, 20, new StringTextComponent("S").setStyle(Style.EMPTY.setStrikethrough(this.string.getStyle().isStrikethrough())), () -> { - this.string.setStyle(this.string.getStyle().setStrikethrough(!this.string.getStyle().getStrikethrough())); + this.string.setStyle(this.string.getStyle().setStrikethrough(!this.string.getStyle().isStrikethrough())); container.init(); })); - container.add(new GuiButtonBase(this.x + 118 + 24 * 4 - 2, this.y + 48, 20, 20, new StringTextComponent("O").setStyle(Style.EMPTY.setObfuscated(this.string.getStyle().getObfuscated())), () -> + container.add(new GuiButtonBase(this.x + 118 + 24 * 4 - 2, this.y + 48, 20, 20, new StringTextComponent("O").setStyle(Style.EMPTY.setObfuscated(this.string.getStyle().isObfuscated())), () -> { - this.string.setStyle(this.string.getStyle().setObfuscated(!this.string.getStyle().getObfuscated())); + this.string.setStyle(this.string.getStyle().setObfuscated(!this.string.getStyle().isObfuscated())); container.init(); })); } diff --git a/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuPageList.java b/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuPageList.java index 4d64783..c7b41ce 100644 --- a/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuPageList.java +++ b/src/main/java/exopandora/worldhandler/gui/menu/impl/MenuPageList.java @@ -78,7 +78,7 @@ public class MenuPageList extends Menu if(index < this.items.size()) { T item = this.items.get(index); - IFormattableTextComponent text = TextUtils.stripText(this.logic.translate(item), this.width, Minecraft.getInstance().fontRenderer); + IFormattableTextComponent text = TextUtils.stripText(this.logic.translate(item), this.width, Minecraft.getInstance().font); button = this.logic.onRegister(this.x, this.y + (this.height + 4) * x, this.width, this.height, text, item, () -> { this.persistence.setSelectedIndex(index); @@ -109,7 +109,7 @@ public class MenuPageList extends Menu @Override public void draw(MatrixStack matrix, int mouseX, int mouseY, float partialTicks) { - Minecraft.getInstance().fontRenderer.drawString(matrix, String.format("%d/%d", this.persistence.getPage() + 1, this.getTotalPages()), this.x, this.y - 11, Config.getSkin().getHeadlineColor()); + Minecraft.getInstance().font.draw(matrix, String.format("%d/%d", this.persistence.getPage() + 1, this.getTotalPages()), this.x, this.y - 11, Config.getSkin().getHeadlineColor()); } private void goLeft(Container container) diff --git a/src/main/java/exopandora/worldhandler/gui/widget/WidgetCommandSyntax.java b/src/main/java/exopandora/worldhandler/gui/widget/WidgetCommandSyntax.java index ada2634..345e921 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/WidgetCommandSyntax.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/WidgetCommandSyntax.java @@ -54,19 +54,19 @@ public class WidgetCommandSyntax implements IContainerWidget { if(this.syntaxField != null && !this.syntaxField.isFocused()) { - this.syntaxField.setValidator(Predicates.alwaysTrue()); + this.syntaxField.setFilter(Predicates.alwaysTrue()); if(container.getContent().getCommandBuilder() != null) { - this.syntaxField.setText(container.getContent().getCommandBuilder().toCommand()); + this.syntaxField.setValue(container.getContent().getCommandBuilder().toCommand()); } else { - this.syntaxField.setText(BUILDER_WORLD_HANDLER.toCommand()); + this.syntaxField.setValue(BUILDER_WORLD_HANDLER.toCommand()); } - this.syntaxField.setValidator(string -> string.equals(this.syntaxField.getText())); - this.syntaxField.setCursorPositionZero(); + this.syntaxField.setFilter(string -> string.equals(this.syntaxField.getValue())); + this.syntaxField.moveCursorToStart(); } } diff --git a/src/main/java/exopandora/worldhandler/gui/widget/WidgetNameField.java b/src/main/java/exopandora/worldhandler/gui/widget/WidgetNameField.java index 5172725..459fb8e 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/WidgetNameField.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/WidgetNameField.java @@ -15,12 +15,12 @@ import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class WidgetNameField implements IContainerWidget { - private final GuiTextFieldTooltip nameField = Util.make(new GuiTextFieldTooltip(0, 0, 0, 11), textfield -> textfield.setMaxStringLength(16)); + private final GuiTextFieldTooltip nameField = Util.make(new GuiTextFieldTooltip(0, 0, 0, 11), textfield -> textfield.setMaxLength(16)); @Override public void initGui(Container container, int x, int y) { - this.nameField.setText(container.getPlayer()); + this.nameField.setValue(container.getPlayer()); this.nameField.setResponder(text -> { container.setPlayer(text); @@ -38,12 +38,12 @@ public class WidgetNameField implements IContainerWidget @Override public void drawScreen(MatrixStack matrix, Container container, int x, int y, int mouseX, int mouseY, float partialTicks) { - String username = container.getPlayer().isEmpty() && !this.nameField.isFocused() ? I18n.format("gui.worldhandler.generic.edit_username") : container.getPlayer(); + String username = container.getPlayer().isEmpty() && !this.nameField.isFocused() ? I18n.get("gui.worldhandler.generic.edit_username") : container.getPlayer(); - int xPos = container.getBackgroundX() + container.getBackgroundWidth() - this.watchOffset() - 7 - Minecraft.getInstance().fontRenderer.getStringWidth(username); + int xPos = container.getBackgroundX() + container.getBackgroundWidth() - this.watchOffset() - 7 - Minecraft.getInstance().font.width(username); int yPos = container.getBackgroundY() + 7; - Minecraft.getInstance().fontRenderer.drawString(matrix, username, xPos, yPos, Config.getSkin().getLabelColor()); + Minecraft.getInstance().font.draw(matrix, username, xPos, yPos, Config.getSkin().getLabelColor()); } @Override @@ -51,7 +51,7 @@ public class WidgetNameField implements IContainerWidget { if(this.nameField.isFocused()) { - this.nameField.setCursorPositionEnd(); + this.nameField.moveCursorToEnd(); } return false; @@ -62,7 +62,7 @@ public class WidgetNameField implements IContainerWidget { if(this.nameField.isFocused()) { - this.nameField.setCursorPositionEnd(); + this.nameField.moveCursorToEnd(); } return false; @@ -81,20 +81,20 @@ public class WidgetNameField implements IContainerWidget private void updateNameField(Container container) { - final FontRenderer font = Minecraft.getInstance().fontRenderer; + final FontRenderer font = Minecraft.getInstance().font; int x = container.getBackgroundX() + container.getBackgroundWidth() - this.watchOffset() - 7; int y = container.getBackgroundY() + 6; if(container.getPlayer().isEmpty()) { - int width = font.getStringWidth(I18n.format("gui.worldhandler.generic.edit_username")) + 2; + int width = font.width(I18n.get("gui.worldhandler.generic.edit_username")) + 2; this.nameField.setWidth(width); - this.nameField.setPosition(x - (font.getStringPropertyWidth(container.getContent().getTitle()) + 2), y); + this.nameField.setPosition(x - (font.width(container.getContent().getTitle()) + 2), y); } else { - int width = font.getStringWidth(container.getPlayer()) + 2; + int width = font.width(container.getPlayer()) + 2; this.nameField.setWidth(width); this.nameField.setPosition(x - width, y); } diff --git a/src/main/java/exopandora/worldhandler/gui/widget/WidgetTabRenderer.java b/src/main/java/exopandora/worldhandler/gui/widget/WidgetTabRenderer.java index 89838a6..16b723f 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/WidgetTabRenderer.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/WidgetTabRenderer.java @@ -69,7 +69,7 @@ public class WidgetTabRenderer implements IContainerWidget int offset = WidgetTabRenderer.offset(container, index, size); Content tab = category.getContent(index); - ITextComponent title = TextUtils.stripText(tab.getTabTitle().mergeStyle(TextFormatting.UNDERLINE), width, Minecraft.getInstance().fontRenderer); + ITextComponent title = TextUtils.stripText(tab.getTabTitle().withStyle(TextFormatting.UNDERLINE), width, Minecraft.getInstance().font); if(content.getActiveContent().equals(tab)) { @@ -174,7 +174,7 @@ public class WidgetTabRenderer implements IContainerWidget private void drawTabTitle(MatrixStack matrix, AbstractGui gui, ITextComponent title, int x, int y, int color) { gui.setBlitOffset(0); - AbstractGui.drawCenteredString(matrix, Minecraft.getInstance().fontRenderer, title, x, y, color); + AbstractGui.drawCenteredString(matrix, Minecraft.getInstance().font, title, x, y, color); } @Override diff --git a/src/main/java/exopandora/worldhandler/gui/widget/WidgetWatch.java b/src/main/java/exopandora/worldhandler/gui/widget/WidgetWatch.java index 8057ab6..88c2d22 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/WidgetWatch.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/WidgetWatch.java @@ -22,9 +22,9 @@ public class WidgetWatch implements IContainerWidget long time = 0; - if(Minecraft.getInstance().world != null) + if(Minecraft.getInstance().level != null) { - time = Minecraft.getInstance().world.getWorldInfo().getDayTime(); + time = Minecraft.getInstance().level.getLevelData().getDayTime(); } RenderUtils.drawWatchIntoGui(matrix, container, watchX, watchY, time, Config.getSettings().smoothWatch()); diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonBase.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonBase.java index 8d446c6..9778df6 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonBase.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonBase.java @@ -33,7 +33,7 @@ public class GuiButtonBase extends Button public void renderButton(MatrixStack matrix, int mouseX, int mouseY, float partialTicks) { this.renderBg(matrix, Minecraft.getInstance(), mouseX, mouseY); - AbstractGui.drawCenteredString(matrix, Minecraft.getInstance().fontRenderer, this.getMessage(), this.x + this.width / 2, this.y + (this.height - 8) / 2, this.getFGColor()); + AbstractGui.drawCenteredString(matrix, Minecraft.getInstance().font, this.getMessage(), this.x + this.width / 2, this.y + (this.height - 8) / 2, this.getFGColor()); } @Override @@ -43,7 +43,7 @@ public class GuiButtonBase extends Button RenderUtils.colorDefaultButton(); int hovered = this.getYImage(this.isHovered()); - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.buttonTexture()); + Minecraft.getInstance().getTextureManager().bind(ResourceHelper.buttonTexture()); int hWidth = this.width / 2; int hHeight = this.height / 2; diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonIcon.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonIcon.java index 7cb893a..72cfc93 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonIcon.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonIcon.java @@ -34,7 +34,7 @@ public class GuiButtonIcon extends GuiButtonTooltip private void renderIcon(MatrixStack matrix) { - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.iconTexture()); + Minecraft.getInstance().getTextureManager().bind(ResourceHelper.iconTexture()); if(this.active) { diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonItem.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonItem.java index 2ee75f0..79153be 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonItem.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonItem.java @@ -21,7 +21,7 @@ public class GuiButtonItem extends GuiButtonBase public GuiButtonItem(int x, int y, int width, int height, ItemStack stack, ActionHandler actionHandler) { - super(x, y, width, height, stack.getTextComponent(), actionHandler); + super(x, y, width, height, stack.getHoverName(), actionHandler); this.stack = stack; } @@ -29,6 +29,6 @@ public class GuiButtonItem extends GuiButtonBase public void renderButton(MatrixStack matrix, int mouseX, int mouseY, float partialTicks) { super.renderBg(matrix, Minecraft.getInstance(), mouseX, mouseY); - Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(this.stack, this.x + this.width / 2 - 8, this.y + 2); + Minecraft.getInstance().getItemRenderer().renderGuiItem(this.stack, this.x + this.width / 2 - 8, this.y + 2); } } diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonList.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonList.java index 5dc60b6..b3dda0c 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonList.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonList.java @@ -45,15 +45,15 @@ public class GuiButtonList extends GuiButtonTooltip this.renderBg(matrix, Minecraft.getInstance(), mouseX, mouseY); this.updateMessage(); - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; + FontRenderer fontRenderer = Minecraft.getInstance().font; if(this.getMessage() != null && !this.getMessage().getString().isEmpty()) { ITextComponent leftArrow = this.isHoveringLeft(mouseX, mouseY) ? TextUtils.ARROW_LEFT_BOLD : TextUtils.ARROW_LEFT; ITextComponent rightArrow = this.isHoveringRight(mouseX, mouseY) ? TextUtils.ARROW_RIGHT_BOLD : TextUtils.ARROW_RIGHT; - int maxWidth = Math.max(0, this.width - fontRenderer.getStringWidth("< >")); - int spaceWidth = fontRenderer.getStringWidth(" "); + int maxWidth = Math.max(0, this.width - fontRenderer.width("< >")); + int spaceWidth = fontRenderer.width(" "); ITextComponent display = TextUtils.stripText((IFormattableTextComponent) this.getMessage(), maxWidth, fontRenderer); int yPos = this.y + (this.height - 8) / 2; diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonPiano.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonPiano.java index f8d0415..e920db9 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonPiano.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiButtonPiano.java @@ -55,7 +55,7 @@ public class GuiButtonPiano extends GuiButtonBase int hovered = this.getYImage(this.isHovered()); RenderUtils.color(1.0F, 1.0F, 1.0F, Config.getSkin().getButtonAlpha()); - Minecraft.getInstance().getTextureManager().bindTexture(NOTE); + Minecraft.getInstance().getTextureManager().bind(NOTE); switch(this.type) { @@ -75,10 +75,10 @@ public class GuiButtonPiano extends GuiButtonBase protected void drawWhiteKey(MatrixStack matrix, int hoverstate) { int textColor = this.getFGColor(); - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; + FontRenderer fontRenderer = Minecraft.getInstance().font; this.blit(matrix, this.x, this.y, 25 + hoverstate * 15 - 15, 0, 15, 92); - fontRenderer.func_243248_b(matrix, this.getMessage(), (float) (this.x + this.width / 2 - fontRenderer.getStringPropertyWidth(this.getMessage()) / 2), (float) (this.y + (this.height - 8) / 2 + 36), textColor); //drawString + fontRenderer.draw(matrix, this.getMessage(), (float) (this.x + this.width / 2 - fontRenderer.width(this.getMessage()) / 2), (float) (this.y + (this.height - 8) / 2 + 36), textColor); //drawString } protected void drawBlackKey(MatrixStack matrix, int hoverstate) @@ -108,7 +108,7 @@ public class GuiButtonPiano extends GuiButtonBase { if(this.sound != null) { - soundHandler.play(SimpleSound.master(this.sound, this.pitch)); + soundHandler.play(SimpleSound.forUI(this.sound, this.pitch)); } } diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiSlider.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiSlider.java index 862b5c1..1f8e525 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiSlider.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiSlider.java @@ -93,8 +93,8 @@ public class GuiSlider extends GuiButtonBase { int value = this.persistence.getValueInt(); IFormattableTextComponent suffix = this.logic.formatValue(value).append(this.logic.formatSuffix(value)); - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; - IFormattableTextComponent text = TextUtils.stripText(this.logic.formatPrefix(value), this.width - fontRenderer.getStringPropertyWidth(suffix), fontRenderer).append(suffix); + FontRenderer fontRenderer = Minecraft.getInstance().font; + IFormattableTextComponent text = TextUtils.stripText(this.logic.formatPrefix(value), this.width - fontRenderer.width(suffix), fontRenderer).append(suffix); this.setMessage(text); } diff --git a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiTextFieldTooltip.java b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiTextFieldTooltip.java index 9006a15..195944b 100644 --- a/src/main/java/exopandora/worldhandler/gui/widget/button/GuiTextFieldTooltip.java +++ b/src/main/java/exopandora/worldhandler/gui/widget/button/GuiTextFieldTooltip.java @@ -21,8 +21,8 @@ public class GuiTextFieldTooltip extends TextFieldWidget public GuiTextFieldTooltip(int x, int y, int width, int height, ITextComponent tooltip) { - super(Minecraft.getInstance().fontRenderer, x, y, width, height, null); - this.setMaxStringLength(Integer.MAX_VALUE); + super(Minecraft.getInstance().font, x, y, width, height, null); + this.setMaxLength(Integer.MAX_VALUE); this.tooltip = tooltip; } @@ -31,18 +31,18 @@ public class GuiTextFieldTooltip extends TextFieldWidget { super.renderButton(matrix, mouseX, mouseY, partialTicks); - if(this.getVisible() && !this.isFocused() && this.tooltip != null && TextFormatting.getTextWithoutFormattingCodes(this.getText()).isEmpty()) + if(this.isVisible() && !this.isFocused() && this.tooltip != null && TextFormatting.stripFormatting(this.getValue()).isEmpty()) { int x = this.x; int y = this.y; - if(this.getAdjustedWidth() != this.width) + if(this.getInnerWidth() != this.width) { x += 4; y += (this.height - 8) / 2; } - Minecraft.getInstance().fontRenderer.func_243246_a(matrix, this.tooltip, (float) x, (float) y, 0x7F7F7F); //drawStringWithShadow + Minecraft.getInstance().font.drawShadow(matrix, this.tooltip, (float) x, (float) y, 0x7F7F7F); //drawStringWithShadow } } @@ -66,11 +66,11 @@ public class GuiTextFieldTooltip extends TextFieldWidget { if(text != null) { - this.setText(text.getString()); + this.setValue(text.getString()); } else { - this.setText((String) null); + this.setValue((String) null); } } } diff --git a/src/main/java/exopandora/worldhandler/usercontent/UsercontentAPI.java b/src/main/java/exopandora/worldhandler/usercontent/UsercontentAPI.java index 113ac45..963c300 100644 --- a/src/main/java/exopandora/worldhandler/usercontent/UsercontentAPI.java +++ b/src/main/java/exopandora/worldhandler/usercontent/UsercontentAPI.java @@ -40,7 +40,7 @@ public class UsercontentAPI { if(object != null) { - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.CHAT, new StringTextComponent(object.toString()), Util.DUMMY_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.CHAT, new StringTextComponent(object.toString()), Util.NIL_UUID); } } diff --git a/src/main/java/exopandora/worldhandler/usercontent/UsercontentLoader.java b/src/main/java/exopandora/worldhandler/usercontent/UsercontentLoader.java index 8956c6c..124503c 100644 --- a/src/main/java/exopandora/worldhandler/usercontent/UsercontentLoader.java +++ b/src/main/java/exopandora/worldhandler/usercontent/UsercontentLoader.java @@ -154,7 +154,7 @@ public class UsercontentLoader private static boolean isValidPathName(Path path) { String name = path.getFileName().toString(); - boolean valid = ResourceLocation.isResouceNameValid(name); + boolean valid = ResourceLocation.isValidResourceLocation(name); if(!valid) { diff --git a/src/main/java/exopandora/worldhandler/usercontent/factory/WidgetFactory.java b/src/main/java/exopandora/worldhandler/usercontent/factory/WidgetFactory.java index 9d2dae0..90bab88 100644 --- a/src/main/java/exopandora/worldhandler/usercontent/factory/WidgetFactory.java +++ b/src/main/java/exopandora/worldhandler/usercontent/factory/WidgetFactory.java @@ -113,9 +113,9 @@ public class WidgetFactory extends AbstractWidgetFactory widget.getLayout().getHeight(), TextUtils.formatNonnull(widget.getText()) ); - textfield.setValidator(Predicates.notNull()); - textfield.setText(this.getApi().getValue(widget.getAttributes().getId())); - textfield.setResponder(this.getActionHandlerFactory().createResponder(string -> textfield.getText(), widget.getAttributes().getId(), widget.getAction())); + textfield.setFilter(Predicates.notNull()); + textfield.setValue(this.getApi().getValue(widget.getAttributes().getId())); + textfield.setResponder(this.getActionHandlerFactory().createResponder(string -> textfield.getValue(), widget.getAttributes().getId(), widget.getAction())); return textfield; } diff --git a/src/main/java/exopandora/worldhandler/util/ActionHelper.java b/src/main/java/exopandora/worldhandler/util/ActionHelper.java index ed3dc10..ea89df3 100644 --- a/src/main/java/exopandora/worldhandler/util/ActionHelper.java +++ b/src/main/java/exopandora/worldhandler/util/ActionHelper.java @@ -34,8 +34,8 @@ public class ActionHelper { public static void backToGame() { - Minecraft.getInstance().displayGuiScreen(null); - Minecraft.getInstance().mouseHelper.grabMouse(); + Minecraft.getInstance().setScreen(null); + Minecraft.getInstance().mouseHandler.grabMouse(); } public static void back(Content content) throws Exception @@ -58,90 +58,90 @@ public class ActionHelper { if(content != null && !(content instanceof ContentContinue)) { - if(content instanceof ContentChild && Minecraft.getInstance().currentScreen != null && Minecraft.getInstance().currentScreen instanceof GuiWorldHandler) + if(content instanceof ContentChild && Minecraft.getInstance().screen != null && Minecraft.getInstance().screen instanceof GuiWorldHandler) { - Minecraft.getInstance().displayGuiScreen(new GuiWorldHandler(((ContentChild) content).withParent(((GuiWorldHandler) Minecraft.getInstance().currentScreen).getContent()))); + Minecraft.getInstance().setScreen(new GuiWorldHandler(((ContentChild) content).withParent(((GuiWorldHandler) Minecraft.getInstance().screen).getContent()))); } else { - Minecraft.getInstance().displayGuiScreen(new GuiWorldHandler(content)); + Minecraft.getInstance().setScreen(new GuiWorldHandler(content)); } } } public static void timeDawn() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderTime(EnumMode.SET, Config.getSettings().getDawn())); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderTime(EnumMode.SET, Config.getSettings().getDawn())); } public static void timeNoon() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderTime(EnumMode.SET, Config.getSettings().getNoon())); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderTime(EnumMode.SET, Config.getSettings().getNoon())); } public static void timeSunset() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderTime(EnumMode.SET, Config.getSettings().getSunset())); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderTime(EnumMode.SET, Config.getSettings().getSunset())); } public static void timeMidnight() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderTime(EnumMode.SET, Config.getSettings().getMidnight())); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderTime(EnumMode.SET, Config.getSettings().getMidnight())); } public static void weatherClear() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderWeather(EnumWeather.CLEAR)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderWeather(EnumWeather.CLEAR)); } public static void weatherRain() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderWeather(EnumWeather.RAIN)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderWeather(EnumWeather.RAIN)); } public static void weatherThunder() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderWeather(EnumWeather.THUNDER)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderWeather(EnumWeather.THUNDER)); } public static void difficultyPeaceful() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderDifficulty(Difficulty.PEACEFUL)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderDifficulty(Difficulty.PEACEFUL)); } public static void difficultyEasy() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderDifficulty(Difficulty.EASY)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderDifficulty(Difficulty.EASY)); } public static void difficultyNormal() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderDifficulty(Difficulty.NORMAL)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderDifficulty(Difficulty.NORMAL)); } public static void difficultyHard() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderDifficulty(Difficulty.HARD)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderDifficulty(Difficulty.HARD)); } public static void gamemodeSurvival() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderGamemode(EnumGamemode.SURVIVAL)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderGamemode(EnumGamemode.SURVIVAL)); } public static void gamemodeCreative() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderGamemode(EnumGamemode.CREATIVE)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderGamemode(EnumGamemode.CREATIVE)); } public static void gamemodeAdventure() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderGamemode(EnumGamemode.ADVENTURE)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderGamemode(EnumGamemode.ADVENTURE)); } public static void gamemodeSpectator() { - CommandHelper.sendCommand(Minecraft.getInstance().getSession().getUsername(), new BuilderGamemode(EnumGamemode.SPECTATOR)); + CommandHelper.sendCommand(Minecraft.getInstance().getUser().getName(), new BuilderGamemode(EnumGamemode.SPECTATOR)); } public static void tryRun(ActionHandler action) @@ -155,14 +155,14 @@ public class ActionHelper } catch(Exception e) { - Minecraft.getInstance().displayGuiScreen(null); - Minecraft.getInstance().mouseHelper.grabMouse(); + Minecraft.getInstance().setScreen(null); + Minecraft.getInstance().mouseHandler.grabMouse(); - ITextComponent message = new TranslationTextComponent("<" + Main.NAME + "> %s", new TranslationTextComponent("worldhandler.error.gui")).mergeStyle(TextFormatting.RED); - ITextComponent cause = new StringTextComponent(" " + e.getClass().getCanonicalName() + ": " + e.getMessage()).mergeStyle(TextFormatting.RED); + ITextComponent message = new TranslationTextComponent("<" + Main.NAME + "> %s", new TranslationTextComponent("worldhandler.error.gui")).withStyle(TextFormatting.RED); + ITextComponent cause = new StringTextComponent(" " + e.getClass().getCanonicalName() + ": " + e.getMessage()).withStyle(TextFormatting.RED); - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.SYSTEM, message, Util.DUMMY_UUID); - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.SYSTEM, cause, Util.DUMMY_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.SYSTEM, message, Util.NIL_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.SYSTEM, cause, Util.NIL_UUID); WorldHandler.LOGGER.throwing(e); } @@ -172,8 +172,8 @@ public class ActionHelper { if(!CommandHelper.canPlayerIssueCommand() && Config.getSettings().permissionQuery()) { - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.SYSTEM, new StringTextComponent(TextFormatting.RED + I18n.format("worldhandler.permission.refused")), Util.DUMMY_UUID); - Minecraft.getInstance().ingameGUI.func_238450_a_(ChatType.SYSTEM, new StringTextComponent(TextFormatting.RED + I18n.format("worldhandler.permission.refused.change", I18n.format("gui.worldhandler.config.settings.permission_query"))), Util.DUMMY_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.SYSTEM, new StringTextComponent(TextFormatting.RED + I18n.get("worldhandler.permission.refused")), Util.NIL_UUID); + Minecraft.getInstance().gui.handleChat(ChatType.SYSTEM, new StringTextComponent(TextFormatting.RED + I18n.get("worldhandler.permission.refused.change", I18n.get("gui.worldhandler.config.settings.permission_query"))), Util.NIL_UUID); } else { diff --git a/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java b/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java index 9627a60..b2131d9 100644 --- a/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java +++ b/src/main/java/exopandora/worldhandler/util/AdvancementHelper.java @@ -34,13 +34,13 @@ public class AdvancementHelper implements IFutureReloadListener return CompletableFuture.supplyAsync(() -> { SimpleReloadableResourceManager serverResourceManager = new SimpleReloadableResourceManager(ResourcePackType.SERVER_DATA); - serverResourceManager.addReloadListener(new NetworkTagManager()); - serverResourceManager.addReloadListener(this.manager); + serverResourceManager.registerReloadListener(new NetworkTagManager()); + serverResourceManager.registerReloadListener(this.manager); return serverResourceManager; - }).thenCompose(stage::markCompleteAwaitingOthers).thenAcceptAsync(serverResourceManager -> + }).thenCompose(stage::wait).thenAcceptAsync(serverResourceManager -> { - List list = Minecraft.getInstance().getResourcePackList().getEnabledPacks().stream().map(ResourcePackInfo::getResourcePack).collect(Collectors.toList()); - serverResourceManager.reloadResources(backgroundExecutor, gameExecutor, CompletableFuture.completedFuture(Unit.INSTANCE), list); + List list = Minecraft.getInstance().getResourcePackRepository().getSelectedPacks().stream().map(ResourcePackInfo::open).collect(Collectors.toList()); + serverResourceManager.createFullReload(backgroundExecutor, gameExecutor, CompletableFuture.completedFuture(Unit.INSTANCE), list); }); } diff --git a/src/main/java/exopandora/worldhandler/util/BlockHelper.java b/src/main/java/exopandora/worldhandler/util/BlockHelper.java index ba86da1..d2ec323 100644 --- a/src/main/java/exopandora/worldhandler/util/BlockHelper.java +++ b/src/main/java/exopandora/worldhandler/util/BlockHelper.java @@ -44,16 +44,16 @@ public class BlockHelper @Nonnull public static BlockPos getFocusedBlockPos() { - World world = Minecraft.getInstance().world; - RayTraceResult result = Minecraft.getInstance().objectMouseOver; + World world = Minecraft.getInstance().level; + RayTraceResult result = Minecraft.getInstance().hitResult; if(result != null && Type.BLOCK.equals(result.getType()) && world != null) { BlockRayTraceResult blockResult = (BlockRayTraceResult) result; - if(!ArrayUtils.contains(BLACKLIST, world.getBlockState(blockResult.getPos()).getBlock())) + if(!ArrayUtils.contains(BLACKLIST, world.getBlockState(blockResult.getBlockPos()).getBlock())) { - return blockResult.getPos(); + return blockResult.getBlockPos(); } } @@ -61,7 +61,7 @@ public class BlockHelper if(player != null) { - return player.getPosition(); + return player.blockPosition(); } return BlockPos.ZERO; @@ -76,7 +76,7 @@ public class BlockHelper @Nonnull public static Block getBlock(BlockPos pos) { - World world = Minecraft.getInstance().world; + World world = Minecraft.getInstance().level; if(world != null) { @@ -170,11 +170,11 @@ public class BlockHelper { if(CommandHelper.canPlayerIssueCommand() && Minecraft.getInstance().getConnection() != null) { - BlockPos pos = Minecraft.getInstance().player.getPosition().add(0, 3, 0); + BlockPos pos = Minecraft.getInstance().player.blockPosition().offset(0, 3, 0); BuilderFill placeFill = new BuilderFill(); placeFill.setPosition1(pos); - placeFill.setPosition2(pos.up()); + placeFill.setPosition2(pos.above()); placeFill.setBlock1(new BlockResourceLocation(Blocks.COMMAND_BLOCK.getRegistryName())); BuilderFill removeFill = new BuilderFill(); @@ -186,7 +186,7 @@ public class BlockHelper removeFill.setZ2(new CoordinateInt(0, EnumType.GLOBAL)); removeFill.setBlock1(new BlockResourceLocation(Blocks.AIR.getRegistryName())); - Minecraft.getInstance().player.sendChatMessage(placeFill.toActualCommand()); + Minecraft.getInstance().player.chat(placeFill.toActualCommand()); BuilderExecute wrapped = new BuilderExecute(); wrapped.setMode1(EnumMode.AT); @@ -194,8 +194,8 @@ public class BlockHelper wrapped.setMode2(EnumMode.RUN); wrapped.setCommand(command); - Minecraft.getInstance().getConnection().sendPacket(new CUpdateCommandBlockPacket(pos, wrapped.toActualCommand(), CommandBlockTileEntity.Mode.REDSTONE, true, false, true)); - Minecraft.getInstance().getConnection().sendPacket(new CUpdateCommandBlockPacket(pos.up(), removeFill.toActualCommand(), CommandBlockTileEntity.Mode.REDSTONE, true, false, true)); + Minecraft.getInstance().getConnection().send(new CUpdateCommandBlockPacket(pos, wrapped.toActualCommand(), CommandBlockTileEntity.Mode.REDSTONE, true, false, true)); + Minecraft.getInstance().getConnection().send(new CUpdateCommandBlockPacket(pos.above(), removeFill.toActualCommand(), CommandBlockTileEntity.Mode.REDSTONE, true, false, true)); return true; } @@ -209,7 +209,7 @@ public class BlockHelper if(Minecraft.getInstance().player != null) { - builder.setState(BlockStateProperties.HORIZONTAL_FACING, Minecraft.getInstance().player.getHorizontalFacing().getOpposite()); + builder.setState(BlockStateProperties.HORIZONTAL_FACING, Minecraft.getInstance().player.getDirection().getOpposite()); } CommandHelper.sendCommand(player, builder); diff --git a/src/main/java/exopandora/worldhandler/util/CommandHelper.java b/src/main/java/exopandora/worldhandler/util/CommandHelper.java index 1e74bd6..f4cff22 100644 --- a/src/main/java/exopandora/worldhandler/util/CommandHelper.java +++ b/src/main/java/exopandora/worldhandler/util/CommandHelper.java @@ -17,14 +17,14 @@ public class CommandHelper { public static void sendFeedback(CommandSource source, String message) { - source.sendFeedback(new StringTextComponent(message), false); + source.sendSuccess(new StringTextComponent(message), false); } public static boolean canPlayerIssueCommand() { if(Minecraft.getInstance().player != null) { - return Minecraft.getInstance().player.hasPermissionLevel(1); + return Minecraft.getInstance().player.hasPermissions(1); } return false; @@ -66,7 +66,7 @@ public class CommandHelper } else if(Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.sendChatMessage(command); + Minecraft.getInstance().player.chat(command); } } } diff --git a/src/main/java/exopandora/worldhandler/util/MutableStringTextComponent.java b/src/main/java/exopandora/worldhandler/util/MutableStringTextComponent.java index 0bca94c..0a59c53 100644 --- a/src/main/java/exopandora/worldhandler/util/MutableStringTextComponent.java +++ b/src/main/java/exopandora/worldhandler/util/MutableStringTextComponent.java @@ -44,7 +44,7 @@ public class MutableStringTextComponent extends StringTextComponent implements I } @Override - public String getUnformattedComponentText() + public String getContents() { return this.text; } @@ -74,13 +74,13 @@ public class MutableStringTextComponent extends StringTextComponent implements I public IReorderingProcessor formatter(String string, Integer index) { - return IReorderingProcessor.fromString(string, this.getStyle()); + return IReorderingProcessor.forward(string, this.getStyle()); } @Override public INBT serialize() { - if(this.getUnformattedComponentText() != null && !this.getUnformattedComponentText().isEmpty()) + if(this.getContents() != null && !this.getContents().isEmpty()) { return StringNBT.valueOf(this.toString()); } @@ -91,13 +91,13 @@ public class MutableStringTextComponent extends StringTextComponent implements I @Override public String toString() { - MutableStringTextComponent serial = (MutableStringTextComponent) this.deepCopy(); - serial.setText(MutableStringTextComponent.getSpecialFormattedText(this.getUnformattedComponentText())); + MutableStringTextComponent serial = (MutableStringTextComponent) this.copy(); + serial.setText(MutableStringTextComponent.getSpecialFormattedText(this.getContents())); return ITextComponent.Serializer.toJson(serial); } @Override - public MutableStringTextComponent copyRaw() + public MutableStringTextComponent plainCopy() { return new MutableStringTextComponent(this.text); } @@ -116,7 +116,7 @@ public class MutableStringTextComponent extends StringTextComponent implements I else { MutableStringTextComponent stringtextcomponent = (MutableStringTextComponent) object; - return this.text.equals(stringtextcomponent.getUnformattedComponentText()) && super.equals(object); + return this.text.equals(stringtextcomponent.getContents()) && super.equals(object); } } } diff --git a/src/main/java/exopandora/worldhandler/util/RegistryHelper.java b/src/main/java/exopandora/worldhandler/util/RegistryHelper.java index fe5af16..b79a43f 100644 --- a/src/main/java/exopandora/worldhandler/util/RegistryHelper.java +++ b/src/main/java/exopandora/worldhandler/util/RegistryHelper.java @@ -32,19 +32,19 @@ public class RegistryHelper static { - registerRegistry(ForgeRegistries.BLOCKS, Block::getTranslationKey); - registerRegistry(ForgeRegistries.ITEMS, Item::getTranslationKey); - registerRegistry(ForgeRegistries.POTIONS, Effect::getName); + registerRegistry(ForgeRegistries.BLOCKS, Block::getDescriptionId); + registerRegistry(ForgeRegistries.ITEMS, Item::getDescriptionId); + registerRegistry(ForgeRegistries.POTIONS, Effect::getDescriptionId); registerRegistry(ForgeRegistries.BIOMES, biome -> { - MutableRegistry registry = DynamicRegistries.func_239770_b_().getRegistry(Registry.BIOME_KEY); + MutableRegistry registry = DynamicRegistries.builtin().registryOrThrow(Registry.BIOME_REGISTRY); ResourceLocation resource = registry.getKey(biome); String key = "biome." + biome.getRegistryName().getNamespace() + "." + resource.getPath(); - return LanguageMap.getInstance().func_230506_b_(key) ? key : resource.toString(); + return LanguageMap.getInstance().has(key) ? key : resource.toString(); }); - registerRegistry(ForgeRegistries.ENCHANTMENTS, Enchantment::getName); - registerRegistry(ForgeRegistries.ENTITIES, EntityType::getTranslationKey); + registerRegistry(ForgeRegistries.ENCHANTMENTS, Enchantment::getDescriptionId); + registerRegistry(ForgeRegistries.ENTITIES, EntityType::getDescriptionId); registerRegistry(ForgeRegistries.STAT_TYPES, stat -> "stat." + stat.toString().replace(':', '.')); } diff --git a/src/main/java/exopandora/worldhandler/util/RenderUtils.java b/src/main/java/exopandora/worldhandler/util/RenderUtils.java index ee51e4b..b6574bb 100644 --- a/src/main/java/exopandora/worldhandler/util/RenderUtils.java +++ b/src/main/java/exopandora/worldhandler/util/RenderUtils.java @@ -39,41 +39,41 @@ public class RenderUtils float rotationHour = (360 / 12) * (hour >= 12 ? (hour - 12) : hour) - 180F; float rotationMinute = (360 / 60) * minute - 180F; - matrix.push(); + matrix.pushPose(); matrix.translate(width + 5, height + 5, 0F); matrix.scale(0.25F, 0.25F, 0.25F); - matrix.rotate(Vector3f.ZP.rotationDegrees(rotationHour)); + matrix.mulPose(Vector3f.ZP.rotationDegrees(rotationHour)); AbstractGui.fill(matrix, -1, -1, 1, 11, 0xFF383838); - matrix.rotate(Vector3f.ZN.rotationDegrees(rotationHour)); + matrix.mulPose(Vector3f.ZN.rotationDegrees(rotationHour)); - matrix.rotate(Vector3f.ZP.rotationDegrees(rotationMinute)); + matrix.mulPose(Vector3f.ZP.rotationDegrees(rotationMinute)); AbstractGui.fill(matrix, -1, -1, 1, 15, 0xFF6F6F6F); - matrix.rotate(Vector3f.ZN.rotationDegrees(rotationMinute)); + matrix.mulPose(Vector3f.ZN.rotationDegrees(rotationMinute)); - matrix.pop(); + matrix.popPose(); RenderUtils.colorDefaultButton(); - Minecraft.getInstance().getTextureManager().bindTexture(ResourceHelper.iconTexture()); + Minecraft.getInstance().getTextureManager().bind(ResourceHelper.iconTexture()); gui.blit(matrix, width + 0, height, 48, 0, 10, 10); - matrix.push(); + matrix.pushPose(); matrix.scale(0.5F, 0.5F, 0.5F); AbstractGui.fill(matrix, (width + 5) * 2 - 1, (height + 4) * 2 + 1, (width + 6) * 2 - 1, (height + 5) * 2 + 1, 0xFF000000); - matrix.pop(); + matrix.popPose(); } public static void renderItemIntoGUI(MatrixStack matrix, ItemStack stack, int x, int y) { ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); TextureManager textureManager = Minecraft.getInstance().getTextureManager(); - IBakedModel bakedmodel = Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(stack, (World) null, (LivingEntity) null); + IBakedModel bakedmodel = Minecraft.getInstance().getItemRenderer().getModel(stack, (World) null, (LivingEntity) null); - matrix.push(); + matrix.pushPose(); - textureManager.bindTexture(PlayerContainer.LOCATION_BLOCKS_TEXTURE); - textureManager.getTexture(PlayerContainer.LOCATION_BLOCKS_TEXTURE).setBlurMipmapDirect(false, false); + textureManager.bind(PlayerContainer.BLOCK_ATLAS); + textureManager.getTexture(PlayerContainer.BLOCK_ATLAS).setFilter(false, false); RenderUtils.enableRescaleNormal(); RenderUtils.enableAlphaTest(); @@ -82,33 +82,33 @@ public class RenderUtils RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); RenderUtils.color(1.0F, 1.0F, 1.0F, 1.0F); - matrix.translate((float) x, (float) y, 100.0F + itemRenderer.zLevel); + matrix.translate((float) x, (float) y, 100.0F + itemRenderer.blitOffset); matrix.translate(8.0F, 8.0F, 0.0F); matrix.scale(1.0F, -1.0F, 1.0F); matrix.scale(16.0F, 16.0F, 16.0F); - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); - boolean flag = !bakedmodel.isSideLit(); + IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().renderBuffers().bufferSource(); + boolean flag = !bakedmodel.usesBlockLight(); if(flag) { - RenderHelper.setupGuiFlatDiffuseLighting(); + RenderHelper.setupForFlatItems(); } - itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.GUI, false, matrix, buffer, 15728880, OverlayTexture.NO_OVERLAY, bakedmodel); - buffer.finish(); + itemRenderer.render(stack, ItemCameraTransforms.TransformType.GUI, false, matrix, buffer, 15728880, OverlayTexture.NO_OVERLAY, bakedmodel); + buffer.endBatch(); RenderSystem.enableDepthTest(); if(flag) { - RenderHelper.setupGui3DDiffuseLighting(); + RenderHelper.setupFor3DItems(); } RenderUtils.disableAlphaTest(); RenderUtils.disableRescaleNormal(); - matrix.pop(); + matrix.popPose(); } @SuppressWarnings("deprecation") diff --git a/src/main/java/exopandora/worldhandler/util/ScoreboardHelper.java b/src/main/java/exopandora/worldhandler/util/ScoreboardHelper.java index 3bf8969..0dc2ccc 100644 --- a/src/main/java/exopandora/worldhandler/util/ScoreboardHelper.java +++ b/src/main/java/exopandora/worldhandler/util/ScoreboardHelper.java @@ -33,14 +33,14 @@ public class ScoreboardHelper private void init() { //Lists - final List colors = this.createList(TextFormatting.values(), TextFormatting::getFriendlyName, TextFormatting::isColor); - final List visibility = this.createList(Visible.values(), value -> value.internalName); + final List colors = this.createList(TextFormatting.values(), TextFormatting::getName, TextFormatting::isColor); + final List visibility = this.createList(Visible.values(), value -> value.name); final List collision = this.createList(CollisionRule.values(), value -> value.name); final List bool = this.createList(new Boolean[] {true, false}, String::valueOf); //Objectives - for(String scoreCriteria : ScoreCriteria.INSTANCES.keySet()) + for(String scoreCriteria : ScoreCriteria.CRITERIA_BY_NAME.keySet()) { this.objectives.insertNode(scoreCriteria.split("[.:]")); } diff --git a/src/main/java/exopandora/worldhandler/util/SignText.java b/src/main/java/exopandora/worldhandler/util/SignText.java index d4710dd..4902365 100644 --- a/src/main/java/exopandora/worldhandler/util/SignText.java +++ b/src/main/java/exopandora/worldhandler/util/SignText.java @@ -40,11 +40,11 @@ public class SignText implements INBTWritable { if(command != null && !command.isEmpty()) { - this.text.getStyle().setClickEvent(new ClickEvent(Action.RUN_COMMAND, command)); + this.text.getStyle().withClickEvent(new ClickEvent(Action.RUN_COMMAND, command)); } else { - this.text.getStyle().setClickEvent(null); + this.text.getStyle().withClickEvent(null); } } @@ -73,9 +73,9 @@ public class SignText implements INBTWritable @Override public String toString() { - if(this.text.getUnformattedComponentText().isEmpty()) + if(this.text.getContents().isEmpty()) { - return this.text.getUnformattedComponentText(); + return this.text.getContents(); } if(this.text.getStyle().isEmpty() && !this.hasCommand()) diff --git a/src/main/java/exopandora/worldhandler/util/TextUtils.java b/src/main/java/exopandora/worldhandler/util/TextUtils.java index ec06368..b2cb8fe 100644 --- a/src/main/java/exopandora/worldhandler/util/TextUtils.java +++ b/src/main/java/exopandora/worldhandler/util/TextUtils.java @@ -13,8 +13,8 @@ public class TextUtils { public static final StringTextComponent ARROW_LEFT = new StringTextComponent("<"); public static final StringTextComponent ARROW_RIGHT = new StringTextComponent(">"); - public static final IFormattableTextComponent ARROW_LEFT_BOLD = new StringTextComponent("<").mergeStyle(net.minecraft.util.text.TextFormatting.BOLD); - public static final IFormattableTextComponent ARROW_RIGHT_BOLD = new StringTextComponent(">").mergeStyle(net.minecraft.util.text.TextFormatting.BOLD); + public static final IFormattableTextComponent ARROW_LEFT_BOLD = new StringTextComponent("<").withStyle(net.minecraft.util.text.TextFormatting.BOLD); + public static final IFormattableTextComponent ARROW_RIGHT_BOLD = new StringTextComponent(">").withStyle(net.minecraft.util.text.TextFormatting.BOLD); public static IFormattableTextComponent stripText(IFormattableTextComponent string, int maxWidth, FontRenderer fontRenderer) { @@ -23,7 +23,7 @@ public class TextUtils public static IFormattableTextComponent stripText(IFormattableTextComponent string, IFormattableTextComponent prefix, int maxWidth, FontRenderer fontRenderer) { - if(fontRenderer.getStringPropertyWidth(prefix) + fontRenderer.getStringPropertyWidth(string) > (maxWidth - fontRenderer.getStringPropertyWidth(prefix))) + if(fontRenderer.width(prefix) + fontRenderer.width(string) > (maxWidth - fontRenderer.width(prefix))) { IFormattableTextComponent result = new StringTextComponent("").setStyle(string.getStyle()); @@ -31,7 +31,7 @@ public class TextUtils { IFormattableTextComponent extension = new StringTextComponent(result.getString() + c + "...").setStyle(string.getStyle()); - if(fontRenderer.getStringPropertyWidth(extension) < maxWidth) + if(fontRenderer.width(extension) < maxWidth) { result = new StringTextComponent(result.getString() + c).setStyle(string.getStyle()); } @@ -42,7 +42,7 @@ public class TextUtils } } - return prefix.copyRaw().append(string); + return prefix.plainCopy().append(string); } public static String formatTotalTime(long tick)