From b5c6a715601869943ce37ced26efc9fec2f88ffe Mon Sep 17 00:00:00 2001 From: gottsch <17928819+gottsch@users.noreply.github.com> Date: Sun, 21 Jul 2019 09:56:27 -0400 Subject: [PATCH 1/4] Fix server side crash because of DataFixer Fix chest placement when structure build fails. --- Treasure2-1.12.2/gradle.properties | 2 +- .../someguyssoftware/treasure2/Treasure.java | 10 +++-- .../chest/AbstractChestGenerator.java | 40 ++++++++++++------- .../worldgen/ChestWorldGenerator.java | 4 +- Treasure2-1.12.2/src/resources/mcmod.info | 2 +- Treasure2-1.12.2/update.json | 7 ++-- 6 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Treasure2-1.12.2/gradle.properties b/Treasure2-1.12.2/gradle.properties index dce9a252e..bee01f557 100644 --- a/Treasure2-1.12.2/gradle.properties +++ b/Treasure2-1.12.2/gradle.properties @@ -6,7 +6,7 @@ mod_name=Treasure2 package_group=someguyssoftware.treasure2 # user alpha, beta, or v (for version) mod_version_type=v -mod_version=1.4.1 +mod_version=1.4.2 mc_version=1.12.2 diff --git a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/Treasure.java b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/Treasure.java index e49244d32..f01e114da 100644 --- a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/Treasure.java +++ b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/Treasure.java @@ -47,6 +47,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.IWorldGenerator; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; @@ -85,12 +86,12 @@ public class Treasure extends AbstractMod { // constants public static final String MODID = "treasure2"; protected static final String NAME = "Treasure2"; - protected static final String VERSION = "1.4.1"; + protected static final String VERSION = "1.4.2"; public static final String UPDATE_JSON_URL = "https://raw.githubusercontent.com/gottsch/gottsch-minecraft-Treasure/master/Treasure2-1.12.2/update.json"; private static final String VERSION_URL = ""; private static final BuildVersion MINECRAFT_VERSION = new BuildVersion(1, 12, 2); - + // latest version private static BuildVersion latestVersion; @@ -217,7 +218,10 @@ public void init(FMLInitializationEvent event) { // add the loot table managers LOOT_TABLES = new TreasureLootTableMaster(Treasure.instance, "", "loot_tables"); - TEMPLATE_MANAGER = new TreasureTemplateManager(TreasureConfig.CUSTOM_STRUCTURE_FOLDER, Minecraft.getMinecraft().getDataFixer()); + TEMPLATE_MANAGER = new TreasureTemplateManager( + TreasureConfig.CUSTOM_STRUCTURE_FOLDER, + FMLCommonHandler.instance().getDataFixer()); +// Minecraft.getMinecraft().getDataFixer()); } diff --git a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java index 8968443d1..9b687affa 100644 --- a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java +++ b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Random; import java.util.stream.Collectors; @@ -26,23 +25,21 @@ import com.someguyssoftware.treasure2.config.TreasureConfig; import com.someguyssoftware.treasure2.enums.Category; import com.someguyssoftware.treasure2.enums.PitTypes; -import com.someguyssoftware.treasure2.enums.Pits; import com.someguyssoftware.treasure2.enums.Rarity; import com.someguyssoftware.treasure2.enums.StructureMarkers; import com.someguyssoftware.treasure2.generator.GenUtil; import com.someguyssoftware.treasure2.generator.marker.GravestoneMarkerGenerator; import com.someguyssoftware.treasure2.generator.marker.RandomStructureMarkerGenerator; import com.someguyssoftware.treasure2.generator.pit.IPitGenerator; -import com.someguyssoftware.treasure2.generator.pit.StructurePitGenerator; import com.someguyssoftware.treasure2.item.LockItem; import com.someguyssoftware.treasure2.item.TreasureItems; import com.someguyssoftware.treasure2.lock.LockState; import com.someguyssoftware.treasure2.tileentity.AbstractTreasureChestTileEntity; +import com.someguyssoftware.treasure2.world.gen.structure.IStructureInfo; import com.someguyssoftware.treasure2.world.gen.structure.IStructureInfoProvider; import com.someguyssoftware.treasure2.worldgen.ChestWorldGenerator; import net.minecraft.block.Block; -import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -124,21 +121,36 @@ else if (config.isBelowGroundAllowed()) { // 5. update the chest coords // chestCoords = new Coords(spawnCoords); - if (pitGenerator instanceof IStructureInfoProvider) { - // TODO could extend IStructureInfoProvider for Treasure context that only records a single or main chest - List coordsList = (List)((IStructureInfoProvider)pitGenerator).getInfo().getMap().get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); - chestCoords = coordsList.get(0); - Treasure.logger.debug("Using StructureInfo relative chest coords -> {}", chestCoords.toShortString()); - chestCoords = chestCoords.add((((IStructureInfoProvider)pitGenerator).getInfo().getCoords())); - } - else { - chestCoords = new Coords(spawnCoords); + + // TODO refactor this whole block/method + if (isGenerated) { + if (pitGenerator instanceof IStructureInfoProvider) { + // TODO could extend IStructureInfoProvider for Treasure context that only records a single or main chest + IStructureInfoProvider structureInfoProvider = (IStructureInfoProvider)pitGenerator; + IStructureInfo structureInfo = structureInfoProvider.getInfo(); + if (structureInfo != null) { + chestCoords = (ICoords) structureInfo + .getMap() + .get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); + } + // List coordsList = (List)((IStructureInfoProvider)pitGenerator).getInfo().getMap().get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); +// chestCoords = coordsList.get(0); + Treasure.logger.debug("Using StructureInfo relative chest coords -> {}", chestCoords.toShortString()); +// chestCoords = chestCoords.add((((IStructureInfoProvider)pitGenerator).getInfo().getCoords())); + } + else { + chestCoords = new Coords(spawnCoords); + } + } + } else { return false; } + // TODO change to has chest coords ie if (chestCoords != null && chestCoords != WorldInfo.EMPTY_COORDS + // if successfully gen the pit - if (isGenerated) { + if (/*isGenerated*/chestCoords != null) { // Treasure.logger.debug("isGenerated = TRUE"); LootTable lootTable = selectLootTable(random, chestRarity); diff --git a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/worldgen/ChestWorldGenerator.java b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/worldgen/ChestWorldGenerator.java index 5ee33243b..672219465 100644 --- a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/worldgen/ChestWorldGenerator.java +++ b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/worldgen/ChestWorldGenerator.java @@ -135,7 +135,7 @@ private void init() { pitGens.put(PitTypes.STRUCTURE, Pits.AIR_PIT, new StructurePitGenerator(new AirPitGenerator())); pitGens.put(PitTypes.STANDARD, Pits.LAVA_TRAP_PIT, new LavaTrapPitGenerator()); - pitGens.put(PitTypes.STRUCTURE, Pits.LAVA_TRAP_PIT, new StructurePitGenerator(new LavaTrapPitGenerator())); + // NONE for STRUCTURE pitGens.put(PitTypes.STANDARD, Pits.MOB_TRAP_PIT, new MobTrapPitGenerator()); pitGens.put(PitTypes.STRUCTURE, Pits.MOB_TRAP_PIT, new StructurePitGenerator(new MobTrapPitGenerator())); @@ -144,7 +144,7 @@ private void init() { pitGens.put(PitTypes.STRUCTURE, Pits.LAVA_SIDE_TRAP_PIT, new StructurePitGenerator(new LavaSideTrapPitGenerator())); pitGens.put(PitTypes.STANDARD, Pits.BIG_BOTTOM_MOB_TRAP_PIT, new BigBottomMobTrapPitGenerator()); - pitGens.put(PitTypes.STRUCTURE, Pits.BIG_BOTTOM_MOB_TRAP_PIT, new StructurePitGenerator(new BigBottomMobTrapPitGenerator())); + // NONE for STRUCTURE // setup the structures pit generators - a subset of the pit generators map // structurePitGenerators.put(Pits.SIMPLE_PIT, pitGenerators.get(Pits.SIMPLE_PIT)); diff --git a/Treasure2-1.12.2/src/resources/mcmod.info b/Treasure2-1.12.2/src/resources/mcmod.info index f3348ac65..a43000aa1 100644 --- a/Treasure2-1.12.2/src/resources/mcmod.info +++ b/Treasure2-1.12.2/src/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "treasure2", "name": "Treasure2!", "description": "", - "version": "1.4.1", + "version": "1.4.2", "mcversion": "1.12.2", "url": "", "updateUrl": "", diff --git a/Treasure2-1.12.2/update.json b/Treasure2-1.12.2/update.json index 926e36183..bb6bfbfbe 100644 --- a/Treasure2-1.12.2/update.json +++ b/Treasure2-1.12.2/update.json @@ -1,8 +1,8 @@ { "homepage": "https://minecraft.curseforge.com/projects/treasure2", "promos": { - "1.12.2-latest": "1.4.1", - "1.12.2-recommended": "1.4.1" + "1.12.2-latest": "1.4.2", + "1.12.2-recommended": "1.4.2" }, "1.12.2": { "0.5.0": "alpha release", @@ -23,7 +23,8 @@ "1.3.5": "Updated to use GottschCore v1.7\nAdded Cauldron Chest (epic).\nAdded Skeleton Block.\nAdded Marker Generator.\nFixed world.isRemote() checks with GottschCore call WorldInfo.isServer/Client().\nExpose custom loot tables.\nUse of GottschCore Loot Tables system instead of Treasure2s.\nFixed so that Skeletons can be placed in Fog.\n", "1.3.6": "Fixed Coin toss in well crash bug.\nRemoved all references to old Loot Tables setup (in ref to coin/well bug).\nFix foreign mod loot table registering.\nUpdated mocreates, sgs metals loot tables to point to right loot tables.\n", "1.3.7": "Fixed bug where Treasure items weren't being added to chests.\n", - "1.4.1": "Add Structures add Structure files.\nUpdate MobTrapPitGenerator to use Proximity Spawners.\nFixed World Generators map - use Enum instead of String.\nRefactor Pit selection code.\n" + "1.4.1": "Add Structures add Structure files.\nUpdate MobTrapPitGenerator to use Proximity Spawners.\nFixed World Generators map - use Enum instead of String.\nRefactor Pit selection code.\n", + "1.4.2": "Fix DataFixer server-side crash.\nRemoved Structure Pit Generators that didnt make sense, ie. Big Bottom, Lava Trap.\nExpanded code when retrieving chest coords from pit structure.\n" } } From 9a62f9ca70148a27aa42a61c6af0b3bb8d575eca Mon Sep 17 00:00:00 2001 From: gottsch <17928819+gottsch@users.noreply.github.com> Date: Sun, 21 Jul 2019 12:36:35 -0400 Subject: [PATCH 2/4] Fix AbstractChestGenerator. --- .../treasure2/generator/chest/AbstractChestGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java index 9b687affa..96c9eafac 100644 --- a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java +++ b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java @@ -129,9 +129,12 @@ else if (config.isBelowGroundAllowed()) { IStructureInfoProvider structureInfoProvider = (IStructureInfoProvider)pitGenerator; IStructureInfo structureInfo = structureInfoProvider.getInfo(); if (structureInfo != null) { - chestCoords = (ICoords) structureInfo + List chestCoordsList = (List) structureInfo .getMap() .get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); + if (!chestCoordsList.isEmpty()) { + chestCoords = chestCoordsList.get(0); + } } // List coordsList = (List)((IStructureInfoProvider)pitGenerator).getInfo().getMap().get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); // chestCoords = coordsList.get(0); From c738bdf3355a57053bd14dbce22cdcbb8b469667 Mon Sep 17 00:00:00 2001 From: gottsch <17928819+gottsch@users.noreply.github.com> Date: Wed, 24 Jul 2019 22:45:40 -0400 Subject: [PATCH 3/4] Fixed chest not generating in proper position in structures. --- Treasure2-1.12.2/build.gradle | 5 +++++ .../treasure2/generator/chest/AbstractChestGenerator.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Treasure2-1.12.2/build.gradle b/Treasure2-1.12.2/build.gradle index 4141cddb0..df49eebca 100644 --- a/Treasure2-1.12.2/build.gradle +++ b/Treasure2-1.12.2/build.gradle @@ -107,4 +107,9 @@ processResources //artifacts { // archives packageJavadoc +//} + +//task copyTask(type: Copy) { +// from 'node_modules/.' +// into 'build/resources/main/static' //} \ No newline at end of file diff --git a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java index 96c9eafac..e4308c3ac 100644 --- a/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java +++ b/Treasure2-1.12.2/src/com/someguyssoftware/treasure2/generator/chest/AbstractChestGenerator.java @@ -139,7 +139,7 @@ else if (config.isBelowGroundAllowed()) { // List coordsList = (List)((IStructureInfoProvider)pitGenerator).getInfo().getMap().get(GenUtil.getMarkerBlock(StructureMarkers.CHEST)); // chestCoords = coordsList.get(0); Treasure.logger.debug("Using StructureInfo relative chest coords -> {}", chestCoords.toShortString()); -// chestCoords = chestCoords.add((((IStructureInfoProvider)pitGenerator).getInfo().getCoords())); + chestCoords = chestCoords.add((((IStructureInfoProvider)pitGenerator).getInfo().getCoords())); } else { chestCoords = new Coords(spawnCoords); From d976fa1799bffdadc16cfbc694af6d133a8d403f Mon Sep 17 00:00:00 2001 From: gottsch <17928819+gottsch@users.noreply.github.com> Date: Wed, 24 Jul 2019 22:46:49 -0400 Subject: [PATCH 4/4] Update update.json --- Treasure2-1.12.2/update.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Treasure2-1.12.2/update.json b/Treasure2-1.12.2/update.json index bb6bfbfbe..85033f528 100644 --- a/Treasure2-1.12.2/update.json +++ b/Treasure2-1.12.2/update.json @@ -24,7 +24,7 @@ "1.3.6": "Fixed Coin toss in well crash bug.\nRemoved all references to old Loot Tables setup (in ref to coin/well bug).\nFix foreign mod loot table registering.\nUpdated mocreates, sgs metals loot tables to point to right loot tables.\n", "1.3.7": "Fixed bug where Treasure items weren't being added to chests.\n", "1.4.1": "Add Structures add Structure files.\nUpdate MobTrapPitGenerator to use Proximity Spawners.\nFixed World Generators map - use Enum instead of String.\nRefactor Pit selection code.\n", - "1.4.2": "Fix DataFixer server-side crash.\nRemoved Structure Pit Generators that didnt make sense, ie. Big Bottom, Lava Trap.\nExpanded code when retrieving chest coords from pit structure.\n" + "1.4.2": "Fix DataFixer server-side crash.\nFixed AbstractChestGenerator crash.\nRemoved Structure Pit Generators that didnt make sense, ie. Big Bottom, Lava Trap.\nExpanded code when retrieving chest coords from pit structure.\n" } }