From bec9214d0ca6381f5f028d933dbbd32d8a8671db Mon Sep 17 00:00:00 2001 From: LexManos Date: Mon, 10 Sep 2018 13:08:35 -0700 Subject: [PATCH] Fix launching in dev --- build.gradle | 20 ++++++++++++---- .../net/minecraft/item/Item.java.patch | 12 +++++----- .../net/minecraftforge/fml/LaunchTesting.java | 23 +++++++++++++++---- .../minecraftforge/registries/GameData.java | 14 +++++------ 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index ef1db7c9f..203e7444c 100644 --- a/build.gradle +++ b/build.gradle @@ -70,6 +70,18 @@ project(':forge') { patchedSrc = file('src/main/java') accessTransformer = file("$rootDir/src/main/resources/forge_at.cfg") srgPatches = false + clientRun { + main = 'net.minecraftforge.fml.LaunchTesting' + env = [ + target: 'fmldevclient' + ] + } + serverRun { + main = 'net.minecraftforge.fml.LaunchTesting' + env = [ + target: 'fmldevserver' + ] + } } applyPatches { canonicalizeAccess true @@ -77,8 +89,8 @@ project(':forge') { maxFuzz 3 } dependencies { - implementation project(':clean') - implementation 'cpw.mods:modlauncher:0.1+' + implementation 'net.minecraft:client:1.13:extra' + implementation 'cpw.mods:modlauncher:0.1.0-rc.3' //Pinned until cpw fixes getCommonSupertype implementation 'net.minecraftforge:accesstransformers:0.10+:shadowed' implementation 'net.minecraftforge:eventbus:0.1+:service' implementation 'net.minecraftforge:forgespi:0.1+' @@ -120,7 +132,7 @@ project(':forge') { // jvmArgs = ['-verbose:class'] classpath sourceSets.main.runtimeClasspath main 'net.minecraftforge.fml.LaunchTesting' - systemProperties target:'fmldevclient' + environment target:'fmldevclient' workingDir 'runclient' } @@ -131,7 +143,7 @@ project(':forge') { classpath sourceSets.main.runtimeClasspath main 'net.minecraftforge.fml.LaunchTesting' args 'nogui' - systemProperties target:'fmldevserver' + environment target:'fmldevserver' workingDir 'runserver' } } diff --git a/patches/minecraft/net/minecraft/item/Item.java.patch b/patches/minecraft/net/minecraft/item/Item.java.patch index f9fc9f068..736b9ea1e 100644 --- a/patches/minecraft/net/minecraft/item/Item.java.patch +++ b/patches/minecraft/net/minecraft/item/Item.java.patch @@ -19,7 +19,7 @@ this.maxStackSize = p_i48487_1_.field_200920_a; + this.canRepair = p_i48487_1_.canRepair; + this.toolClasses.putAll(p_i48487_1_.toolClasses); -+ Object tmp = net.minecraftforge.fml.DistExecutor.callWhenOn(Dist.CLIENT, p_i48487_1_.teisr); ++ Object tmp = p_i48487_1_.teisr == null ? null : net.minecraftforge.fml.DistExecutor.callWhenOn(Dist.CLIENT, p_i48487_1_.teisr); + this.teisr = tmp == null ? null : () -> (net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer) tmp; if (this.maxDamage > 0) { this.addPropertyOverride(new ResourceLocation("damaged"), DAMAGED_GETTER); @@ -86,7 +86,7 @@ + + @Nullable + private final java.util.function.Supplier teisr; -+ ++ + private final java.util.Map toolClasses = new java.util.HashMap(); + + protected final boolean canRepair; @@ -119,7 +119,7 @@ + } + + /* ======================================== FORGE END =====================================*/ -+ ++ public static void registerItems() { registerItemBlock(Blocks.AIR, new ItemAir(Blocks.AIR, new Item.Builder())); func_200879_a(Blocks.STONE, ItemGroup.BUILDING_BLOCKS); @@ -137,7 +137,7 @@ this.field_208104_e = p_208103_1_; return this; } -+ ++ + public Item.Builder setNoRepair() { + canRepair = false; + return this; @@ -154,10 +154,10 @@ + toolClasses.remove(toolClass); + else + toolClasses.put(toolClass, level); - } ++ } + + public void setTileEntityItemStackRenderer(java.util.function.Supplier> teisrSupplier) { + this.teisr = teisrSupplier; + } + } -+} + } diff --git a/src/main/java/net/minecraftforge/fml/LaunchTesting.java b/src/main/java/net/minecraftforge/fml/LaunchTesting.java index 739d177f9..2abc2e297 100644 --- a/src/main/java/net/minecraftforge/fml/LaunchTesting.java +++ b/src/main/java/net/minecraftforge/fml/LaunchTesting.java @@ -45,11 +45,24 @@ public class LaunchTesting logcontext.getConfiguration().addFilter(axformFilter); logcontext.getConfiguration().addFilter(eventbusFilter); logcontext.updateLoggers(); - System.setProperty("fml.explodedDir", "/home/cpw/projects/mods/inventorysorter/classes"); + File invsorter = new File("/home/cpw/projects/mods/inventorysorter/classes"); + if (invsorter.exists()) { + System.setProperty("fml.explodedDir", "/home/cpw/projects/mods/inventorysorter/classes"); //TODO: Move this to a example included in our tests, not a random location... + } + String assets = System.getenv().getOrDefault("assetDirectory", "assets"); + String target = System.getenv().get("target"); + + if (target == null) { + throw new IllegalArgumentException("Environment variable target must be set."); + } + hackNatives(); - Launcher.main("--launchTarget", System.getProperty("target"),"--gameDir", ".", - "--accessToken", "blah", "--version", "FMLDev", "--assetIndex", "1.13", - "--assetsDir","/home/cpw/MultiMC/assets", + Launcher.main("--launchTarget", target, + "--gameDir", ".", + "--accessToken", "blah", + "--version", "FMLDev", + "--assetIndex", "1.13", + "--assetsDir", assets, "--userProperties", "{}"); Thread.sleep(10000); } @@ -57,7 +70,7 @@ public class LaunchTesting private static void hackNatives() { String paths = System.getProperty("java.library.path"); - String nativesDir = "/home/cpw/.gradle/caches/minecraft/net/minecraft/natives/1.12.2"; + String nativesDir = "/home/cpw/.gradle/caches/minecraft/net/minecraft/natives/1.12.2"; //TODO Not hardcode this, FG setups us a natives folder. And sets it in the eclipse run configs. if (Strings.isNullOrEmpty(paths)) paths = nativesDir; diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 3c54e67ab..74afcf1a4 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -165,9 +165,9 @@ public class GameData } @SuppressWarnings("unchecked") - public static BiMap getBlockItemMap() + public static Map getBlockItemMap() { - return RegistryManager.ACTIVE.getRegistry(Item.class).getSlaveMap(BLOCK_TO_ITEM, BiMap.class); + return RegistryManager.ACTIVE.getRegistry(Item.class).getSlaveMap(BLOCK_TO_ITEM, Map.class); } @SuppressWarnings("unchecked") @@ -345,7 +345,7 @@ public class GameData }; owner.setSlaveMap(BLOCKSTATE_TO_ID, idMap); */ - owner.setSlaveMap(BLOCK_TO_ITEM, HashBiMap.create()); + owner.setSlaveMap(BLOCK_TO_ITEM, Maps.newHashMap()); } @Override @@ -380,22 +380,22 @@ public class GameData if (item instanceof ItemBlock) { @SuppressWarnings("unchecked") - BiMap blockToItem = owner.getSlaveMap(BLOCK_TO_ITEM, BiMap.class); - blockToItem.forcePut(((ItemBlock)item).getBlock(), item); + Map blockToItem = owner.getSlaveMap(BLOCK_TO_ITEM, Map.class); + ((ItemBlock)item).func_195946_a(blockToItem, item); } } @Override public void onClear(IForgeRegistryInternal owner, RegistryManager stage) { - owner.getSlaveMap(BLOCK_TO_ITEM, BiMap.class).clear(); + owner.getSlaveMap(BLOCK_TO_ITEM, Map.class).clear(); } @Override public void onCreate(IForgeRegistryInternal owner, RegistryManager stage) { // We share the blockItem map between items and blocks registries - BiMap map = stage.getRegistry(BLOCKS).getSlaveMap(BLOCK_TO_ITEM, BiMap.class); + Map map = stage.getRegistry(BLOCKS).getSlaveMap(BLOCK_TO_ITEM, Map.class); owner.setSlaveMap(BLOCK_TO_ITEM, map); } }