From 231749d4ed8a2838a7f7b90b799ffbff9c526689 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sat, 8 Aug 2020 19:30:28 +0200 Subject: [PATCH 01/12] Fixed weird variable name indentation Some weird variable name indentation using tabs was fixed. Tabs are cool, but variable type should be separated using SINGLE space from variable's name. --- .../alternatingflux/AlternatingFlux.java | 53 ++++++++++--------- .../block/BlockAFTileProvider.java | 2 +- .../block/TileEntityRelayAF.java | 5 +- .../alternatingflux/client/ClientProxy.java | 6 +-- .../alternatingflux/wire/AFWireType.java | 18 +++---- 5 files changed, 41 insertions(+), 43 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index b21be7b..d2e5315 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -30,46 +30,47 @@ @Mod(modid = AlternatingFlux.MODID, version = AlternatingFlux.VERSION, dependencies = "required-after:immersiveengineering@[0.12,)", acceptedMinecraftVersions = "[1.12.2]") @Mod.EventBusSubscriber public class AlternatingFlux { - public static final String MODID = "alternatingflux"; - public static final String VERSION = "${version}"; - public static final String MODNAME = "Alternating Flux"; - + public static final String MODID = "alternatingflux"; + public static final String VERSION = "${version}"; + public static final String MODNAME = "Alternating Flux"; + public static Logger logger; - + @Mod.Instance(MODID) - public static AlternatingFlux instance = new AlternatingFlux(); - public static CreativeTabs creativeTab = new CreativeTabs(MODID) { + public static AlternatingFlux instance = new AlternatingFlux(); + public static CreativeTabs creativeTab = new CreativeTabs(MODID) { @Override public ItemStack getTabIconItem() { return new ItemStack(AlternatingFlux.item_coil, 1, 0); } }; - - public static final List blocks = new ArrayList<>(); - public static final List items = new ArrayList<>(); - + + public static final List blocks = new ArrayList<>(); + public static final List items = new ArrayList<>(); + public static BlockConnector block_conn = null; - - public static ItemAFBase item_conn = null; - public static ItemWireCoil item_coil = null; - public static ItemMaterial item_material = null; + + public static ItemAFBase item_conn = null; + public static ItemWireCoil item_coil = null; + public static ItemMaterial item_material = null; public static ResourceLocation TEX_PASSTHROUGH_AF = new ResourceLocation(AlternatingFlux.MODID, "blocks/passthrough_af"); + @SidedProxy(clientSide = "antibluequirk.alternatingflux.client.ClientProxy", serverSide = "antibluequirk.alternatingflux.CommonProxy") public static CommonProxy proxy; - + @EventHandler public void preInit(FMLPreInitializationEvent e) { logger = e.getModLog(); Config.preInit(e); - + AFWireType.init(); proxy.preInit(); - + GameRegistry.registerTileEntity(TileEntityRelayAF.class, MODID + ":af_relay"); GameRegistry.registerTileEntity(TileEntityTransformerAF.class, MODID + ":af_transformer"); } - + private static ResourceLocation createRegistryName(String unlocalized) { unlocalized = unlocalized.substring(unlocalized.indexOf(MODID)); @@ -80,32 +81,32 @@ private static ResourceLocation createRegistryName(String unlocalized) @SubscribeEvent public static void registerBlocks(RegistryEvent.Register event) { block_conn = new BlockConnector(); - + for (Block block : blocks) event.getRegistry().register(block.setRegistryName(createRegistryName(block.getUnlocalizedName()))); } - + @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { //item_conn = block_conn.createItemBlock(); item_coil = new ItemWireCoil(); item_material = new ItemMaterial(); - + for (Item item : items) event.getRegistry().register(item.setRegistryName(createRegistryName(item.getUnlocalizedName()))); - + OreDictionary.registerOre("wireConstantan", new ItemStack(item_material, 1, 0)); } - + @SubscribeEvent public static void registerRecipes(RegistryEvent.Register event) { //Recipes.addRecipes(event.getRegistry()); } - + @EventHandler public void init(FMLInitializationEvent e) { } - + @EventHandler public void postInit(FMLPostInitializationEvent e) { proxy.postInit(); diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java b/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java index c9e2cb0..b431a51 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java @@ -17,6 +17,6 @@ public BlockAFTileProvider(String name, Material material, PropertyEnum mainP @Override public String createRegistryName() { - return AlternatingFlux.MODID+":"+name; + return AlternatingFlux.MODID + ":" + name; } } diff --git a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java index ecede3d..cb5bc80 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java +++ b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java @@ -38,9 +38,8 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public class TileEntityRelayAF extends TileEntityImmersiveConnectable - implements ITickable, IDirectionalTile, IBlockBounds, IOBJModelCallback { - public EnumFacing facing = EnumFacing.DOWN; +public class TileEntityRelayAF extends TileEntityImmersiveConnectable implements ITickable, IDirectionalTile, IBlockBounds, IOBJModelCallback { + public EnumFacing facing = EnumFacing.DOWN; boolean firstTick = true; diff --git a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java index ca68420..8cdd184 100755 --- a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java @@ -65,10 +65,8 @@ public void registerModels(ModelRegistryEvent evt) { WireApi.registerConnectorForRender("conn_af", new ResourceLocation("alternatingflux:block/connector/connector_af.obj"), null); WireApi.registerConnectorForRender("rel_af", new ResourceLocation("alternatingflux:block/connector/relay_af.obj"), null); - WireApi.registerConnectorForRender("transformer_af_left", - new ResourceLocation("alternatingflux:block/connector/transformer_af_left.obj"), null); - WireApi.registerConnectorForRender("transformer_af_right", - new ResourceLocation("alternatingflux:block/connector/transformer_af_right.obj"), null); + WireApi.registerConnectorForRender("transformer_af_left", new ResourceLocation("alternatingflux:block/connector/transformer_af_left.obj"), null); + WireApi.registerConnectorForRender("transformer_af_right", new ResourceLocation("alternatingflux:block/connector/transformer_af_right.obj"), null); //This is mostly copied from IE's registerModels function in it's ClientProxy, so we can get everything integrated properly. for(Block block : AlternatingFlux.blocks) diff --git a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java index 364389c..07d967a 100755 --- a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java +++ b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java @@ -14,17 +14,17 @@ public class AFWireType extends WireType { public static AFWireType AF; - + final int ordinal; + + public static String[] wire_names = { "AF" }; + public static int[] wire_rates; + public static double[] wire_lossratios; + public static int[] wire_length; - public static String[] wire_names = { "AF" }; - public static int[] wire_rates; - public static double[] wire_lossratios; - public static int[] wire_length; - - public static int[] wire_colors; - public static double[] wire_renderdias = { 0.078125 }; - + public static int[] wire_colors; + public static double[] wire_renderdias = { 0.078125 }; + public AFWireType(int ordinal) { super(); this.ordinal = ordinal; From 2122cffd5f9de39bd9cbcd1c0f10d3a4c4a38b2d Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sat, 8 Aug 2020 19:33:13 +0200 Subject: [PATCH 02/12] Fixed legacy registration of TileEntities Line 70 and 71 of ALternatingFlux.java were using legacy string key-based registration. As this method is (was?) deprecated, I replaced it with the standard ResourceLocation-based registration. It was done in background anyways, but this eliminates the need to do additional checks. --- .../java/antibluequirk/alternatingflux/AlternatingFlux.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index d2e5315..4694c34 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -67,8 +67,8 @@ public void preInit(FMLPreInitializationEvent e) { AFWireType.init(); proxy.preInit(); - GameRegistry.registerTileEntity(TileEntityRelayAF.class, MODID + ":af_relay"); - GameRegistry.registerTileEntity(TileEntityTransformerAF.class, MODID + ":af_transformer"); + GameRegistry.registerTileEntity(TileEntityRelayAF.class, new ResourceLocation(MODID, "af_relay")); + GameRegistry.registerTileEntity(TileEntityTransformerAF.class, new ResourceLocation(MODID, "af_af_transformer")); } private static ResourceLocation createRegistryName(String unlocalized) From a5274b510ff2934b0db5a556917ee7f3bf6f156f Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sat, 8 Aug 2020 20:11:04 +0200 Subject: [PATCH 03/12] Updated build.gradle to use the latest forge version Well, not exactly the latest, but the latest usable forge version. Newer versions require Forge Gradle 3, which works only for MC 1.13+. --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 26b982b..f7979d0 100755 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ compileJava { } minecraft { - version = "1.12.2-14.23.4.2756" + version = "1.12.2-14.23.5.2847" runDir = "run" replace '${version}', project.version @@ -34,7 +34,7 @@ minecraft { // 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 = "snapshot_20171003" + mappings = "stable_39" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } repositories { From 918ed6dda0e68cd0d187a090c93cbe2177f4237d Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 10:09:20 +0200 Subject: [PATCH 04/12] Fixed the code for the latest stable MCP mappings Also, general optimizations were done to the codebase. --- .../alternatingflux/AlternatingFlux.java | 70 +++++++------------ .../alternatingflux/CommonProxy.java | 15 ++++ .../alternatingflux/block/BlockConnector.java | 22 +++--- .../block/TileEntityRelayAF.java | 26 ++----- .../block/TileEntityTransformerAF.java | 32 --------- .../alternatingflux/client/ClientProxy.java | 6 +- .../alternatingflux/item/ItemAFBase.java | 31 ++++---- .../alternatingflux/item/ItemWireCoil.java | 29 +++----- .../alternatingflux/wire/AFWireType.java | 14 ++-- 9 files changed, 86 insertions(+), 159 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index 4694c34..28a70bc 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -6,17 +6,13 @@ import org.apache.logging.log4j.Logger; import antibluequirk.alternatingflux.block.BlockConnector; -import antibluequirk.alternatingflux.block.TileEntityRelayAF; -import antibluequirk.alternatingflux.block.TileEntityTransformerAF; import antibluequirk.alternatingflux.item.ItemAFBase; import antibluequirk.alternatingflux.item.ItemMaterial; import antibluequirk.alternatingflux.item.ItemWireCoil; -import antibluequirk.alternatingflux.wire.AFWireType; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod; @@ -24,15 +20,13 @@ import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.*; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.oredict.OreDictionary; @Mod(modid = AlternatingFlux.MODID, version = AlternatingFlux.VERSION, dependencies = "required-after:immersiveengineering@[0.12,)", acceptedMinecraftVersions = "[1.12.2]") @Mod.EventBusSubscriber public class AlternatingFlux { - public static final String MODID = "alternatingflux"; - public static final String VERSION = "${version}"; - public static final String MODNAME = "Alternating Flux"; + public static final String MODID = "alternatingflux"; + public static final String VERSION = "${version}"; + public static final String MODNAME = "Alternating Flux"; public static Logger logger; @@ -40,7 +34,7 @@ public class AlternatingFlux { public static AlternatingFlux instance = new AlternatingFlux(); public static CreativeTabs creativeTab = new CreativeTabs(MODID) { @Override - public ItemStack getTabIconItem() { + public ItemStack createIcon() { return new ItemStack(AlternatingFlux.item_coil, 1, 0); } }; @@ -60,15 +54,25 @@ public ItemStack getTabIconItem() { public static CommonProxy proxy; @EventHandler - public void preInit(FMLPreInitializationEvent e) { - logger = e.getModLog(); - Config.preInit(e); + public void preInit(FMLPreInitializationEvent event) { + logger = event.getModLog(); + Config.preInit(event); - AFWireType.init(); - proxy.preInit(); + item_material = new ItemMaterial(); + block_conn = new BlockConnector(); + item_coil = new ItemWireCoil(); - GameRegistry.registerTileEntity(TileEntityRelayAF.class, new ResourceLocation(MODID, "af_relay")); - GameRegistry.registerTileEntity(TileEntityTransformerAF.class, new ResourceLocation(MODID, "af_af_transformer")); + proxy.preInit(); + } + + @EventHandler + public void init(FMLInitializationEvent event) { + proxy.init(); + } + + @EventHandler + public void postInit(FMLPostInitializationEvent event) { + proxy.postInit(); } private static ResourceLocation createRegistryName(String unlocalized) @@ -79,36 +83,14 @@ private static ResourceLocation createRegistryName(String unlocalized) } @SubscribeEvent - public static void registerBlocks(RegistryEvent.Register event) { - block_conn = new BlockConnector(); - - for (Block block : blocks) - event.getRegistry().register(block.setRegistryName(createRegistryName(block.getUnlocalizedName()))); + public static void registerBlocks(RegistryEvent.Register event) { + for(Block block : blocks) + event.getRegistry().register(block.setRegistryName(createRegistryName(block.getTranslationKey()))); } @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { - //item_conn = block_conn.createItemBlock(); - item_coil = new ItemWireCoil(); - item_material = new ItemMaterial(); - - for (Item item : items) - event.getRegistry().register(item.setRegistryName(createRegistryName(item.getUnlocalizedName()))); - - OreDictionary.registerOre("wireConstantan", new ItemStack(item_material, 1, 0)); - } - - @SubscribeEvent - public static void registerRecipes(RegistryEvent.Register event) { - //Recipes.addRecipes(event.getRegistry()); - } - - @EventHandler - public void init(FMLInitializationEvent e) { - } - - @EventHandler - public void postInit(FMLPostInitializationEvent e) { - proxy.postInit(); + for(Item item : items) + event.getRegistry().register(item.setRegistryName(createRegistryName(item.getTranslationKey()))); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/CommonProxy.java b/src/main/java/antibluequirk/alternatingflux/CommonProxy.java index 77027fb..3a467f9 100755 --- a/src/main/java/antibluequirk/alternatingflux/CommonProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/CommonProxy.java @@ -1,9 +1,24 @@ package antibluequirk.alternatingflux; +import antibluequirk.alternatingflux.block.TileEntityRelayAF; +import antibluequirk.alternatingflux.block.TileEntityTransformerAF; +import antibluequirk.alternatingflux.wire.AFWireType; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.oredict.OreDictionary; + public class CommonProxy { public void preInit() { + GameRegistry.registerTileEntity(TileEntityRelayAF.class, new ResourceLocation(AlternatingFlux.MODID, "af_relay")); + GameRegistry.registerTileEntity(TileEntityTransformerAF.class, new ResourceLocation(AlternatingFlux.MODID, "af_af_transformer")); + } + + public void init() { + AFWireType.init(); } public void postInit() { + OreDictionary.registerOre("wireConstantan", new ItemStack(AlternatingFlux.item_material, 1, 0)); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java index 5de18c1..11015ed 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java @@ -2,12 +2,9 @@ import java.util.Arrays; -import antibluequirk.alternatingflux.AlternatingFlux; -import blusunrize.immersiveengineering.ImmersiveEngineering; import blusunrize.immersiveengineering.api.IEProperties; import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable; import blusunrize.immersiveengineering.client.models.IOBJModelCallback; -import blusunrize.immersiveengineering.common.blocks.BlockIETileProvider; import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; import net.minecraft.block.Block; import net.minecraft.block.material.EnumPushReaction; @@ -22,7 +19,6 @@ import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3i; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.property.ExtendedBlockState; @@ -59,7 +55,7 @@ public String getCustomStateMapping(int meta, boolean itemBlock) protected BlockStateContainer createBlockState() { BlockStateContainer base = super.createBlockState(); - IUnlistedProperty[] unlisted = (base instanceof ExtendedBlockState) ? ((ExtendedBlockState) base).getUnlistedProperties().toArray(new IUnlistedProperty[0]) : new IUnlistedProperty[0]; + IUnlistedProperty[] unlisted = (base instanceof ExtendedBlockState) ? ((ExtendedBlockState) base).getUnlistedProperties().toArray(new IUnlistedProperty[0]) : new IUnlistedProperty[0]; unlisted = Arrays.copyOf(unlisted, unlisted.length+1); unlisted[unlisted.length-1] = IEProperties.CONNECTIONS; return new ExtendedBlockState(this, base.getProperties().toArray(new IProperty[0]), unlisted); @@ -82,16 +78,14 @@ public IBlockState getExtendedState(IBlockState state, IBlockAccess world, Block @Override public boolean canIEBlockBePlaced(World world, BlockPos pos, IBlockState newState, EnumFacing side, float hitX, float hitY, float hitZ, EntityPlayer player, ItemStack stack) { - switch (BlockTypes_Connector.values()[stack.getItemDamage()]) + if(stack.getItemDamage() == BlockTypes_Connector.TRANSFORMER_AF.getMeta()) { - case TRANSFORMER_AF: - for (int hh = 1; hh <= 2; hh++) - { - BlockPos pos2 = pos.up(hh); - if (world.isOutsideBuildHeight(pos2) || !world.getBlockState(pos2).getBlock().isReplaceable(world, pos2)) - return false; - } - break; + for(int offset = 1; offset <= 2; offset++) + { + BlockPos current_block = pos.up(offset); + if(world.isOutsideBuildHeight(current_block) || !world.getBlockState(current_block).getBlock().isReplaceable(world, current_block)) + return false; + } } return true; } diff --git a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java index cb5bc80..ff7c413 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java +++ b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java @@ -1,37 +1,23 @@ package antibluequirk.alternatingflux.block; -import java.util.HashMap; -import java.util.HashSet; import java.util.Set; import antibluequirk.alternatingflux.wire.AFWireType; -import blusunrize.immersiveengineering.api.ApiUtils; import blusunrize.immersiveengineering.api.TargetingInfo; -import blusunrize.immersiveengineering.api.IEEnums.SideConfig; -import blusunrize.immersiveengineering.api.energy.immersiveflux.FluxStorage; -import blusunrize.immersiveengineering.api.energy.wires.IImmersiveConnectable; import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler; -import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.AbstractConnection; import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable; import blusunrize.immersiveengineering.api.energy.wires.WireType; import blusunrize.immersiveengineering.client.models.IOBJModelCallback; import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IBlockBounds; import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDirectionalTile; -import blusunrize.immersiveengineering.common.util.EnergyHelper; -import blusunrize.immersiveengineering.common.util.EnergyHelper.IEForgeEnergyWrapper; -import blusunrize.immersiveengineering.common.util.EnergyHelper.IIEInternalFluxHandler; -import blusunrize.immersiveengineering.common.util.Utils; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; import net.minecraftforge.client.MinecraftForgeClient; @@ -85,7 +71,7 @@ public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hi @Override public boolean canConnectCable(WireType cableType, TargetingInfo target, Vec3i offset) { - if(cableType!=AFWireType.AF) + if(cableType!=AFWireType.instance) return false; return limitType==null || limitType==cableType; } @@ -120,7 +106,7 @@ public void writeCustomNBT(NBTTagCompound nbt, boolean descPacket) { @Override public void readCustomNBT(NBTTagCompound nbt, boolean descPacket) { super.readCustomNBT(nbt, descPacket); - facing = EnumFacing.getFront(nbt.getInteger("facing")); + facing = EnumFacing.byIndex(nbt.getInteger("facing")); } @@ -128,8 +114,8 @@ public void readCustomNBT(NBTTagCompound nbt, boolean descPacket) { public Vec3d getConnectionOffset(Connection con) { EnumFacing side = facing.getOpposite(); - double conRadius = con.cableType.getRenderDiameter()/2; - return new Vec3d(.5+side.getFrontOffsetX()*(.375-conRadius), .5+side.getFrontOffsetY()*(.375-conRadius), .5+side.getFrontOffsetZ()*(.375-conRadius)); + double conRadius = 0.375 - con.cableType.getRenderDiameter() / 2; + return new Vec3d(0.5 + side.getXOffset() * conRadius, 0.5 + side.getYOffset() * conRadius, 0.5 + side.getZOffset() * conRadius); } @SideOnly(Side.CLIENT) @@ -144,7 +130,7 @@ public AxisAlignedBB getRenderBoundingBox() { } int getRenderRadiusIncrease() { - return AFWireType.AF.getMaxLength(); + return AFWireType.instance.getMaxLength(); } @Override @@ -172,6 +158,6 @@ public float[] getBlockBounds() { @Override public boolean shouldRenderGroup(IBlockState object, String group) { - return MinecraftForgeClient.getRenderLayer()== BlockRenderLayer.TRANSLUCENT; + return MinecraftForgeClient.getRenderLayer() == BlockRenderLayer.TRANSLUCENT; } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/block/TileEntityTransformerAF.java b/src/main/java/antibluequirk/alternatingflux/block/TileEntityTransformerAF.java index edc8d0f..06a503e 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/TileEntityTransformerAF.java +++ b/src/main/java/antibluequirk/alternatingflux/block/TileEntityTransformerAF.java @@ -1,40 +1,8 @@ package antibluequirk.alternatingflux.block; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; - -import antibluequirk.alternatingflux.wire.AFWireType; -import blusunrize.immersiveengineering.api.ApiUtils; -import blusunrize.immersiveengineering.api.IEProperties; -import blusunrize.immersiveengineering.api.IEProperties.PropertyBoolInverted; -import blusunrize.immersiveengineering.api.TargetingInfo; -import blusunrize.immersiveengineering.api.energy.wires.IImmersiveConnectable; -import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; -import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable; import blusunrize.immersiveengineering.api.energy.wires.WireType; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IAdvancedSelectionBounds; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDirectionalTile; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDualState; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IHasDummyBlocks; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IMirrorAble; -import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IUsesBooleanProperty; -import blusunrize.immersiveengineering.common.blocks.metal.TileEntityTransformer; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityTransformerHV; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumFacing.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.Vec3d; public class TileEntityTransformerAF extends TileEntityTransformerHV { diff --git a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java index 8cdd184..ea1a357 100755 --- a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java @@ -10,8 +10,6 @@ import blusunrize.immersiveengineering.api.energy.wires.WireApi; import blusunrize.immersiveengineering.client.IECustomStateMapper; import blusunrize.immersiveengineering.client.models.obj.IEOBJLoader; -import blusunrize.immersiveengineering.client.models.smart.ConnLoader; -import blusunrize.immersiveengineering.common.blocks.BlockIEFluid; import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IIEMetaBlock; import blusunrize.lib.manual.ManualInstance; import blusunrize.lib.manual.ManualPages; @@ -40,6 +38,7 @@ public void preInit() { OBJLoader.INSTANCE.addDomain(AlternatingFlux.MODID); IEOBJLoader.instance.addDomain(AlternatingFlux.MODID); } + @Override public void postInit() { super.postInit(); @@ -56,11 +55,14 @@ public void postInit() { new ManualPages.Text(m, "alternatingflux3") ); } + @SubscribeEvent public void registerTextures(TextureStitchEvent.Pre event){ event.getMap().registerSprite(AlternatingFlux.TEX_PASSTHROUGH_AF); } + @SubscribeEvent + @SuppressWarnings("deprecation") public void registerModels(ModelRegistryEvent evt) { WireApi.registerConnectorForRender("conn_af", new ResourceLocation("alternatingflux:block/connector/connector_af.obj"), null); diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java b/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java index c2be6b4..42c294e 100755 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java +++ b/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java @@ -1,38 +1,31 @@ package antibluequirk.alternatingflux.item; -import net.minecraft.block.Block; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import javax.annotation.Nonnull; import antibluequirk.alternatingflux.AlternatingFlux; import blusunrize.immersiveengineering.common.IEContent; -import blusunrize.immersiveengineering.common.blocks.BlockIEBase; -import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; import blusunrize.immersiveengineering.common.items.ItemIEBase; public class ItemAFBase extends ItemIEBase { public ItemAFBase(String name, int stackSize, String... subNames) { super(name, stackSize, subNames); - fixupItem(this); + this.fixupItem(); } - //This function allows us to use IEBase classes, by fixing things up so they come from our mod. - //It should be called right after the super call in any constructor of a class that derives from ItemIEBase - //This is kind of hacky, but allows us to avoid copying a lot of code. - @SuppressWarnings("rawtypes") - public static void fixupItem(ItemIEBase item) { + /* + * This function allows us to use IEBase classes, by fixing things up so they come from our mod. + * It should be called right after the super call in any constructor of a class that derives from ItemIEBase + * This is kind of hacky, but allows us to avoid copying a lot of code. + */ + private final void fixupItem() { //First, get the item out of IE's registries. - Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size()-1); - if (rItem != item) throw new IllegalStateException("fixupItem was not called at the appropriate time"); + Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size() - 1); + if (rItem != this) throw new IllegalStateException("fixupItem was not called at the appropriate time"); //Now, reconfigure the block to match our mod. - item.setUnlocalizedName(AlternatingFlux.MODID+"."+item.itemName); - item.setCreativeTab(AlternatingFlux.creativeTab); + this.setTranslationKey(AlternatingFlux.MODID + "." + this.itemName); + this.setCreativeTab(AlternatingFlux.creativeTab); //And add it to our registries. - AlternatingFlux.items.add(item); + AlternatingFlux.items.add(this); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java index 3b4e702..8888f6e 100755 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java +++ b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java @@ -1,39 +1,24 @@ package antibluequirk.alternatingflux.item; -import blusunrize.immersiveengineering.common.IESaveData; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityEnergyMeter; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityFeedthrough; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityRedstoneBreaker; -import blusunrize.immersiveengineering.common.util.ItemNBTHelper; -import blusunrize.immersiveengineering.common.util.Utils; import blusunrize.immersiveengineering.api.ApiUtils; import blusunrize.immersiveengineering.api.Lib; -import blusunrize.immersiveengineering.api.TargetingInfo; -import blusunrize.immersiveengineering.api.energy.wires.IImmersiveConnectable; import blusunrize.immersiveengineering.api.energy.wires.IWireCoil; -import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler; -import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; import blusunrize.immersiveengineering.api.energy.wires.WireType; -import net.minecraft.block.state.IBlockState; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; -import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; -import java.util.HashSet; import java.util.List; -import java.util.Set; - import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -48,11 +33,7 @@ public ItemWireCoil() { @Override public WireType getWireType(ItemStack stack) { - switch (stack.getItemDamage()) { - default: - case 0: - return (WireType) AFWireType.AF; - } + return AFWireType.instance; } @Override @@ -73,7 +54,13 @@ public EnumActionResult onItemUseFirst(EntityPlayer player, World world, BlockPo return ApiUtils.doCoilUse(this, player, world, pos, hand, side, hitX, hitY, hitZ); } - + /** + * @param wire The wire type to use + * @param targetEntity The target tile entity + * @return True if the cable can be connected to the target tile entity + * @deprecated Currently unused; Marked for removal + */ + @Deprecated public boolean canConnectCable(WireType wire, TileEntity targetEntity) { //We specifically only support whitelisted TEs here. //Without this, you can connect the AF wire to any connectable block that doesn't specifically deny it. diff --git a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java index 07d967a..4b8b1cd 100755 --- a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java +++ b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java @@ -6,6 +6,7 @@ import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; import blusunrize.immersiveengineering.api.energy.wires.WireApi; import blusunrize.immersiveengineering.api.energy.wires.WireType; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -13,7 +14,8 @@ import net.minecraftforge.fml.relauncher.SideOnly; public class AFWireType extends WireType { - public static AFWireType AF; + public static final ResourceLocation texture = new ResourceLocation(AlternatingFlux.MODID, "block/connector/relay_af.obj"); + public static AFWireType instance; final int ordinal; @@ -25,18 +27,16 @@ public class AFWireType extends WireType { public static int[] wire_colors; public static double[] wire_renderdias = { 0.078125 }; - public AFWireType(int ordinal) { + private AFWireType(int ordinal) { super(); this.ordinal = ordinal; } public static void init() { - AF = new AFWireType(0); - WireApi.registerFeedthroughForWiretype(AF, new ResourceLocation(AlternatingFlux.MODID, "block/connector/relay_af.obj"), - AlternatingFlux.TEX_PASSTHROUGH_AF, new float[]{0, 0, 16, 16}, - .75, (s)->s.getBlock()== AlternatingFlux.block_conn && s.getValue(AlternatingFlux.block_conn.property) == BlockTypes_Connector.RELAY_AF, - 8*30F/AF.getTransferRate(), 15, (f)->f); + instance = new AFWireType(0); + IBlockState validconnection = AlternatingFlux.block_conn.getDefaultState().withProperty(AlternatingFlux.block_conn.property, BlockTypes_Connector.RELAY_AF); + WireApi.registerFeedthroughForWiretype(instance, texture, AlternatingFlux.TEX_PASSTHROUGH_AF, new float[]{0, 0, 16, 16}, 0.75, validconnection, 8 * 30F / instance.getTransferRate(), 15, (f)->f); } /** From dd46328cdc98a59bf056485dc2ac9ca297cd43f2 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 13:18:35 +0200 Subject: [PATCH 05/12] Removed ItemIEBase dependance The ItemIEBase was absolutely unsuitable to inherit from, since it does nothing besides promoting bad coding practice of tying registry names together with translation keys. Minecraft Forge officially states that this kind of relationship is considered a bad coding practice. As such, it was removed, and replaced with much cleaner implementation. --- .../alternatingflux/AlternatingFlux.java | 19 +++---- .../alternatingflux/CommonProxy.java | 2 +- .../alternatingflux/client/ClientProxy.java | 53 ++---------------- .../alternatingflux/item/ItemAFBase.java | 31 ---------- .../alternatingflux/item/ItemMaterial.java | 7 --- .../alternatingflux/item/ItemWireCoil.java | 14 +++-- .../assets/alternatingflux/lang/en_us.lang | 4 +- .../af.json => coil_constantan.json} | 2 +- .../item/{material => }/wire_constantan.json | 2 +- .../{wirecoil_af.png => coil_constantan.png} | Bin ...ire_constantan.png => wire_constantan.png} | Bin 11 files changed, 28 insertions(+), 106 deletions(-) delete mode 100755 src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java delete mode 100755 src/main/java/antibluequirk/alternatingflux/item/ItemMaterial.java rename src/main/resources/assets/alternatingflux/models/item/{wirecoil/af.json => coil_constantan.json} (56%) rename src/main/resources/assets/alternatingflux/models/item/{material => }/wire_constantan.json (52%) rename src/main/resources/assets/alternatingflux/textures/items/{wirecoil_af.png => coil_constantan.png} (100%) rename src/main/resources/assets/alternatingflux/textures/items/{material_wire_constantan.png => wire_constantan.png} (100%) diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index 28a70bc..9dfa9c7 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -6,8 +6,6 @@ import org.apache.logging.log4j.Logger; import antibluequirk.alternatingflux.block.BlockConnector; -import antibluequirk.alternatingflux.item.ItemAFBase; -import antibluequirk.alternatingflux.item.ItemMaterial; import antibluequirk.alternatingflux.item.ItemWireCoil; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; @@ -20,6 +18,7 @@ import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.*; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.registries.IForgeRegistry; @Mod(modid = AlternatingFlux.MODID, version = AlternatingFlux.VERSION, dependencies = "required-after:immersiveengineering@[0.12,)", acceptedMinecraftVersions = "[1.12.2]") @Mod.EventBusSubscriber @@ -40,13 +39,10 @@ public ItemStack createIcon() { }; public static final List blocks = new ArrayList<>(); - public static final List items = new ArrayList<>(); + public static final List items = new ArrayList<>(); //TODO remove - public static BlockConnector block_conn = null; - - public static ItemAFBase item_conn = null; - public static ItemWireCoil item_coil = null; - public static ItemMaterial item_material = null; + public static Item item_conn, item_coil, item_wire; + public static BlockConnector block_conn; public static ResourceLocation TEX_PASSTHROUGH_AF = new ResourceLocation(AlternatingFlux.MODID, "blocks/passthrough_af"); @@ -58,7 +54,7 @@ public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); Config.preInit(event); - item_material = new ItemMaterial(); + item_wire = new Item().setRegistryName(new ResourceLocation(AlternatingFlux.MODID, "wire_constantan")).setTranslationKey("wire_constantan").setCreativeTab(creativeTab); block_conn = new BlockConnector(); item_coil = new ItemWireCoil(); @@ -90,7 +86,10 @@ public static void registerBlocks(RegistryEvent.Register event) { @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { + IForgeRegistry reg = event.getRegistry(); for(Item item : items) - event.getRegistry().register(item.setRegistryName(createRegistryName(item.getTranslationKey()))); + reg.register(item.setRegistryName(createRegistryName(item.getTranslationKey()))); + + reg.registerAll(item_coil, item_wire); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/CommonProxy.java b/src/main/java/antibluequirk/alternatingflux/CommonProxy.java index 3a467f9..d4cbc90 100755 --- a/src/main/java/antibluequirk/alternatingflux/CommonProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/CommonProxy.java @@ -19,6 +19,6 @@ public void init() { } public void postInit() { - OreDictionary.registerOre("wireConstantan", new ItemStack(AlternatingFlux.item_material, 1, 0)); + OreDictionary.registerOre("wireConstantan", new ItemStack(AlternatingFlux.item_wire, 1, 0)); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java index ea1a357..0ea6144 100755 --- a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java @@ -5,7 +5,6 @@ import antibluequirk.alternatingflux.AlternatingFlux; import antibluequirk.alternatingflux.CommonProxy; import antibluequirk.alternatingflux.Config; -import antibluequirk.alternatingflux.item.ItemAFBase; import blusunrize.immersiveengineering.api.ManualHelper; import blusunrize.immersiveengineering.api.energy.wires.WireApi; import blusunrize.immersiveengineering.client.IECustomStateMapper; @@ -15,10 +14,8 @@ import blusunrize.lib.manual.ManualPages; import net.minecraft.block.Block; import net.minecraft.client.renderer.ItemMeshDefinition; -import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelRegistryEvent; @@ -46,8 +43,7 @@ public void postInit() { m.addEntry("alternatingflux", ManualHelper.CAT_ENERGY, new ManualPages.Text(m, "alternatingflux0"), - new ManualPages.Crafting(m, "alternatingfluxWire", new ItemStack(AlternatingFlux.item_material, 1, 0), - new ItemStack(AlternatingFlux.item_coil, 1, 0)), + new ManualPages.Crafting(m, "alternatingfluxWire", new ItemStack(AlternatingFlux.item_wire, 1, 0), new ItemStack(AlternatingFlux.item_coil, 1, 0)), new ManualPages.Text(m, "alternatingflux1"), new ManualPages.Crafting(m, "alternatingfluxRelay", new ItemStack(AlternatingFlux.block_conn, 1, 0)), new ManualPages.Crafting(m, "alternatingfluxTransformer", new ItemStack(AlternatingFlux.block_conn, 1, 1)), @@ -70,7 +66,9 @@ public void registerModels(ModelRegistryEvent evt) WireApi.registerConnectorForRender("transformer_af_left", new ResourceLocation("alternatingflux:block/connector/transformer_af_left.obj"), null); WireApi.registerConnectorForRender("transformer_af_right", new ResourceLocation("alternatingflux:block/connector/transformer_af_right.obj"), null); - //This is mostly copied from IE's registerModels function in it's ClientProxy, so we can get everything integrated properly. + ModelLoader.setCustomModelResourceLocation(AlternatingFlux.item_coil, 0, new ModelResourceLocation(AlternatingFlux.item_coil.getRegistryName(), "inventory")); + ModelLoader.setCustomModelResourceLocation(AlternatingFlux.item_wire, 0, new ModelResourceLocation(AlternatingFlux.item_wire.getRegistryName(), "inventory")); + for(Block block : AlternatingFlux.blocks) { final ResourceLocation loc = Block.REGISTRY.getNameForObject(block); @@ -115,49 +113,6 @@ public ModelResourceLocation getModelLocation(ItemStack stack) else ModelLoader.setCustomModelResourceLocation(blockItem, 0, new ModelResourceLocation(loc, "inventory")); } - - for(Item item : AlternatingFlux.items) - { - if(item instanceof ItemBlock) - continue; - if(item instanceof ItemAFBase) - { - ItemAFBase ieMetaItem = (ItemAFBase)item; - if(ieMetaItem.registerSubModels&&ieMetaItem.getSubNames()!=null&&ieMetaItem.getSubNames().length > 0) - { - for(int meta = 0; meta < ieMetaItem.getSubNames().length; meta++) - { - ResourceLocation loc = new ResourceLocation(AlternatingFlux.MODID, ieMetaItem.itemName+"/"+ieMetaItem.getSubNames()[meta]); - ModelBakery.registerItemVariants(ieMetaItem, loc); - ModelLoader.setCustomModelResourceLocation(ieMetaItem, meta, new ModelResourceLocation(loc, "inventory")); - } - } else - { - final ResourceLocation loc = new ResourceLocation(AlternatingFlux.MODID, ieMetaItem.itemName); - ModelBakery.registerItemVariants(ieMetaItem, loc); - ModelLoader.setCustomMeshDefinition(ieMetaItem, new ItemMeshDefinition() - { - @Override - public ModelResourceLocation getModelLocation(ItemStack stack) - { - return new ModelResourceLocation(loc, "inventory"); - } - }); - } - } else - { - final ResourceLocation loc = Item.REGISTRY.getNameForObject(item); - ModelBakery.registerItemVariants(item, loc); - ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() - { - @Override - public ModelResourceLocation getModelLocation(ItemStack stack) - { - return new ModelResourceLocation(loc, "inventory"); - } - }); - } - } } @SubscribeEvent public void updateConfig(OnConfigChangedEvent e) diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java b/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java deleted file mode 100755 index 42c294e..0000000 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemAFBase.java +++ /dev/null @@ -1,31 +0,0 @@ -package antibluequirk.alternatingflux.item; - -import net.minecraft.item.Item; -import antibluequirk.alternatingflux.AlternatingFlux; -import blusunrize.immersiveengineering.common.IEContent; -import blusunrize.immersiveengineering.common.items.ItemIEBase; - -public class ItemAFBase extends ItemIEBase { - public ItemAFBase(String name, int stackSize, String... subNames) { - super(name, stackSize, subNames); - this.fixupItem(); - } - - /* - * This function allows us to use IEBase classes, by fixing things up so they come from our mod. - * It should be called right after the super call in any constructor of a class that derives from ItemIEBase - * This is kind of hacky, but allows us to avoid copying a lot of code. - */ - private final void fixupItem() { - //First, get the item out of IE's registries. - Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size() - 1); - if (rItem != this) throw new IllegalStateException("fixupItem was not called at the appropriate time"); - - //Now, reconfigure the block to match our mod. - this.setTranslationKey(AlternatingFlux.MODID + "." + this.itemName); - this.setCreativeTab(AlternatingFlux.creativeTab); - - //And add it to our registries. - AlternatingFlux.items.add(this); - } -} \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemMaterial.java b/src/main/java/antibluequirk/alternatingflux/item/ItemMaterial.java deleted file mode 100755 index f7c1ed7..0000000 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemMaterial.java +++ /dev/null @@ -1,7 +0,0 @@ -package antibluequirk.alternatingflux.item; - -public class ItemMaterial extends ItemAFBase { - public ItemMaterial() { - super("material", 64, "wire_constantan"); - } -} \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java index 8888f6e..2010c86 100755 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java +++ b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java @@ -3,6 +3,7 @@ import blusunrize.immersiveengineering.common.blocks.metal.TileEntityEnergyMeter; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityFeedthrough; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityRedstoneBreaker; +import blusunrize.immersiveengineering.common.items.IEItemInterfaces.IColouredItem; import blusunrize.immersiveengineering.api.ApiUtils; import blusunrize.immersiveengineering.api.Lib; import blusunrize.immersiveengineering.api.energy.wires.IWireCoil; @@ -10,11 +11,13 @@ import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -22,13 +25,17 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; +import antibluequirk.alternatingflux.AlternatingFlux; import antibluequirk.alternatingflux.block.TileEntityRelayAF; import antibluequirk.alternatingflux.block.TileEntityTransformerAF; import antibluequirk.alternatingflux.wire.AFWireType; -public class ItemWireCoil extends ItemAFBase implements IWireCoil { +public class ItemWireCoil extends Item implements IWireCoil, IColouredItem { public ItemWireCoil() { - super("wirecoil", 64, "af"); + super(); + this.setRegistryName(new ResourceLocation(AlternatingFlux.MODID, "coil_constantan")); + this.setCreativeTab(AlternatingFlux.creativeTab); + this.setTranslationKey("coil_constantan"); } @Override @@ -45,8 +52,7 @@ public void addInformation(ItemStack stack, @Nullable World worldIn, List Date: Sun, 9 Aug 2020 14:53:17 +0200 Subject: [PATCH 06/12] Removed unused BlockAFBase class The code was moved over to BlockAFTileProvider --- .../alternatingflux/AlternatingFlux.java | 8 ++++ .../alternatingflux/block/BlockAFBase.java | 46 ------------------- .../block/BlockAFTileProvider.java | 24 +++++++++- .../alternatingflux/block/BlockConnector.java | 17 +++---- 4 files changed, 40 insertions(+), 55 deletions(-) delete mode 100755 src/main/java/antibluequirk/alternatingflux/block/BlockAFBase.java diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index 9dfa9c7..71babd3 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -81,14 +81,22 @@ private static ResourceLocation createRegistryName(String unlocalized) @SubscribeEvent public static void registerBlocks(RegistryEvent.Register event) { for(Block block : blocks) + { + logger.info("Registering legacy item with TK {}", block.getTranslationKey()); event.getRegistry().register(block.setRegistryName(createRegistryName(block.getTranslationKey()))); + logger.info("Registered legacy block with TK {} and registry name {}", block.getTranslationKey(), block.getRegistryName().toString()); + } } @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { IForgeRegistry reg = event.getRegistry(); for(Item item : items) + { + logger.info("Registering legacy item with TK {}", item.getTranslationKey()); reg.register(item.setRegistryName(createRegistryName(item.getTranslationKey()))); + logger.info("Registered legacy item with TK {} and registry name {}", item.getTranslationKey(), item.getRegistryName().toString()); + } reg.registerAll(item_coil, item_wire); } diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockAFBase.java b/src/main/java/antibluequirk/alternatingflux/block/BlockAFBase.java deleted file mode 100755 index 1dae390..0000000 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockAFBase.java +++ /dev/null @@ -1,46 +0,0 @@ -package antibluequirk.alternatingflux.block; - -import antibluequirk.alternatingflux.AlternatingFlux; -import blusunrize.immersiveengineering.common.IEContent; -import blusunrize.immersiveengineering.common.blocks.BlockIEBase; -import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.block.properties.PropertyEnum; -import net.minecraft.item.Item; - -public class BlockAFBase & BlockIEBase.IBlockEnum> extends BlockIEBase { - public BlockAFBase(String name, Material material, PropertyEnum mainProperty, Class itemBlock, Object... additionalProperties) - { - super(name, material, mainProperty, itemBlock, additionalProperties); - fixupBlock(this, itemBlock); - } - - @Override - public String createRegistryName() - { - return AlternatingFlux.MODID+":"+name; - } - - //This function allows us to use BlockIEBase class, by fixing things up so they come from our mod. - //It should be called right after the super call in any constructor of a class that derives from BlockIEBase - //This is kind of hacky, but allows us to avoid copying a lot of code. - @SuppressWarnings("rawtypes") - public static void fixupBlock(BlockIEBase block, Class itemBlock) { - //First, get the block out of IE's registries. - Block rBlock = IEContent.registeredIEBlocks.remove(IEContent.registeredIEBlocks.size()-1); - if (rBlock != block) throw new IllegalStateException("fixupBlock was not called at the appropriate time, removed block did not match"); - - Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size()-1); - if (rItem.getClass() != itemBlock) throw new IllegalStateException("fixupBlock was not called at the appropriate time"); - - //Now, reconfigure the block to match our mod. - block.setCreativeTab(AlternatingFlux.creativeTab); - - //And add it to our registries. - AlternatingFlux.blocks.add(block); - try{ - AlternatingFlux.items.add(itemBlock.getConstructor(Block.class).newInstance(block)); - }catch(Exception e){e.printStackTrace();} - } -} diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java b/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java index b431a51..572b7e8 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java @@ -1,17 +1,20 @@ package antibluequirk.alternatingflux.block; import antibluequirk.alternatingflux.AlternatingFlux; +import blusunrize.immersiveengineering.common.IEContent; import blusunrize.immersiveengineering.common.blocks.BlockIEBase; import blusunrize.immersiveengineering.common.blocks.BlockIETileProvider; import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.item.Item; abstract class BlockAFTileProvider & BlockIEBase.IBlockEnum> extends BlockIETileProvider { public BlockAFTileProvider(String name, Material material, PropertyEnum mainProperty, Class itemBlock, Object... additionalProperties) { super(name, material, mainProperty, itemBlock, additionalProperties); - BlockAFBase.fixupBlock(this, itemBlock); + this.unregisterFromIEContent(itemBlock); } @Override @@ -19,4 +22,23 @@ public String createRegistryName() { return AlternatingFlux.MODID + ":" + name; } + + /** + * This function allows us to use BlockIEBase class, by fixing things up so they come from our mod. + * It should be called right after the super call in any constructor of a class that derives from BlockIEBase + * This is kind of hacky, but allows us to avoid copying a lot of code. + */ + private final void unregisterFromIEContent(Class itemBlock) { + Block rBlock = IEContent.registeredIEBlocks.remove(IEContent.registeredIEBlocks.size()-1); + if (rBlock != this) throw new IllegalStateException("fixupBlock was not called at the appropriate time, removed block did not match"); + + Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size()-1); + if (rItem.getClass() != itemBlock) throw new IllegalStateException("fixupBlock was not called at the appropriate time"); + + //And add it to our registries. + AlternatingFlux.blocks.add(this); + try{ + AlternatingFlux.items.add(itemBlock.getConstructor(Block.class).newInstance(this)); + }catch(Exception e){e.printStackTrace();} + } } diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java index 11015ed..4534039 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java @@ -2,6 +2,7 @@ import java.util.Arrays; +import antibluequirk.alternatingflux.AlternatingFlux; import blusunrize.immersiveengineering.api.IEProperties; import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable; import blusunrize.immersiveengineering.client.models.IOBJModelCallback; @@ -29,14 +30,14 @@ public class BlockConnector extends BlockAFTileProvider { public BlockConnector() { - super("connector", Material.IRON, PropertyEnum.create("type", BlockTypes_Connector.class), ItemBlockIEBase.class, IEProperties.FACING_ALL, - IEProperties.BOOLEANS[0], IEProperties.BOOLEANS[1], IEProperties.MULTIBLOCKSLAVE, IOBJModelCallback.PROPERTY); - setHardness(3.0F); - setResistance(15.0F); - lightOpacity = 0; - setMetaBlockLayer(BlockTypes_Connector.RELAY_AF.getMeta(), BlockRenderLayer.SOLID, BlockRenderLayer.TRANSLUCENT); - setAllNotNormalBlock(); - setMetaMobilityFlag(BlockTypes_Connector.TRANSFORMER_AF.getMeta(), EnumPushReaction.BLOCK); + super("connector", Material.IRON, PropertyEnum.create("type", BlockTypes_Connector.class), ItemBlockIEBase.class, IEProperties.FACING_ALL, IEProperties.BOOLEANS[0], IEProperties.BOOLEANS[1], IEProperties.MULTIBLOCKSLAVE, IOBJModelCallback.PROPERTY); + this.setHardness(3.0F); + this.setResistance(15.0F); + this.lightOpacity = 0; + this.setMetaBlockLayer(BlockTypes_Connector.RELAY_AF.getMeta(), BlockRenderLayer.SOLID, BlockRenderLayer.TRANSLUCENT); + this.setAllNotNormalBlock(); + this.setMetaMobilityFlag(BlockTypes_Connector.TRANSFORMER_AF.getMeta(), EnumPushReaction.BLOCK); + this.setCreativeTab(AlternatingFlux.creativeTab); } @Override From b3347cd5d6130331ab808ad20ee6814bc7f3e8e5 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 15:14:37 +0200 Subject: [PATCH 07/12] Completely removed registry name dependency on translation keys As stated in the last commit, the registry names have nothing to do with translation keys. This commit is a final sentence to that statement. It completely removes the leftover dependance in the main mod class, and also increases flexibility a little bit (See BlockUnregisteredIETileProvider). --- .gitignore | 44 ++++----- .../alternatingflux/AlternatingFlux.java | 30 +----- .../block/BlockAFTileProvider.java | 44 --------- .../alternatingflux/block/BlockConnector.java | 28 ++++-- .../BlockUnregisteredIETileProvider.java | 52 +++++++++++ .../alternatingflux/client/ClientProxy.java | 91 +++++++++---------- .../assets/alternatingflux/lang/en_us.lang | 6 +- 7 files changed, 142 insertions(+), 153 deletions(-) delete mode 100755 src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java create mode 100644 src/main/java/antibluequirk/alternatingflux/block/BlockUnregisteredIETileProvider.java mode change 100755 => 100644 src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java diff --git a/.gitignore b/.gitignore index 2c770e0..a5b9343 100755 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,22 @@ -# eclipse -bin -*.launch -.settings -.metadata -.classpath -.project - -# idea -out -*.ipr -*.iws -*.iml -.idea - -# gradle -build -.gradle - -# other -eclipse -run +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index 71babd3..a3baf12 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -1,8 +1,5 @@ package antibluequirk.alternatingflux; -import java.util.ArrayList; -import java.util.List; - import org.apache.logging.log4j.Logger; import antibluequirk.alternatingflux.block.BlockConnector; @@ -38,9 +35,6 @@ public ItemStack createIcon() { } }; - public static final List blocks = new ArrayList<>(); - public static final List items = new ArrayList<>(); //TODO remove - public static Item item_conn, item_coil, item_wire; public static BlockConnector block_conn; @@ -71,33 +65,15 @@ public void postInit(FMLPostInitializationEvent event) { proxy.postInit(); } - private static ResourceLocation createRegistryName(String unlocalized) - { - unlocalized = unlocalized.substring(unlocalized.indexOf(MODID)); - unlocalized = unlocalized.replaceFirst("\\.", ":"); - return new ResourceLocation(unlocalized); - } - @SubscribeEvent - public static void registerBlocks(RegistryEvent.Register event) { - for(Block block : blocks) - { - logger.info("Registering legacy item with TK {}", block.getTranslationKey()); - event.getRegistry().register(block.setRegistryName(createRegistryName(block.getTranslationKey()))); - logger.info("Registered legacy block with TK {} and registry name {}", block.getTranslationKey(), block.getRegistryName().toString()); - } + public static void registerBlocks(RegistryEvent.Register event) { + event.getRegistry().register(block_conn); } @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { IForgeRegistry reg = event.getRegistry(); - for(Item item : items) - { - logger.info("Registering legacy item with TK {}", item.getTranslationKey()); - reg.register(item.setRegistryName(createRegistryName(item.getTranslationKey()))); - logger.info("Registered legacy item with TK {} and registry name {}", item.getTranslationKey(), item.getRegistryName().toString()); - } - + reg.register(AlternatingFlux.block_conn.getItemBlock()); reg.registerAll(item_coil, item_wire); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java b/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java deleted file mode 100755 index 572b7e8..0000000 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockAFTileProvider.java +++ /dev/null @@ -1,44 +0,0 @@ -package antibluequirk.alternatingflux.block; - -import antibluequirk.alternatingflux.AlternatingFlux; -import blusunrize.immersiveengineering.common.IEContent; -import blusunrize.immersiveengineering.common.blocks.BlockIEBase; -import blusunrize.immersiveengineering.common.blocks.BlockIETileProvider; -import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.block.properties.PropertyEnum; -import net.minecraft.item.Item; - -abstract class BlockAFTileProvider & BlockIEBase.IBlockEnum> extends BlockIETileProvider -{ - public BlockAFTileProvider(String name, Material material, PropertyEnum mainProperty, Class itemBlock, Object... additionalProperties) { - super(name, material, mainProperty, itemBlock, additionalProperties); - this.unregisterFromIEContent(itemBlock); - } - - @Override - public String createRegistryName() - { - return AlternatingFlux.MODID + ":" + name; - } - - /** - * This function allows us to use BlockIEBase class, by fixing things up so they come from our mod. - * It should be called right after the super call in any constructor of a class that derives from BlockIEBase - * This is kind of hacky, but allows us to avoid copying a lot of code. - */ - private final void unregisterFromIEContent(Class itemBlock) { - Block rBlock = IEContent.registeredIEBlocks.remove(IEContent.registeredIEBlocks.size()-1); - if (rBlock != this) throw new IllegalStateException("fixupBlock was not called at the appropriate time, removed block did not match"); - - Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size()-1); - if (rItem.getClass() != itemBlock) throw new IllegalStateException("fixupBlock was not called at the appropriate time"); - - //And add it to our registries. - AlternatingFlux.blocks.add(this); - try{ - AlternatingFlux.items.add(itemBlock.getConstructor(Block.class).newInstance(this)); - }catch(Exception e){e.printStackTrace();} - } -} diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java index 4534039..9c5f218 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java @@ -1,6 +1,7 @@ package antibluequirk.alternatingflux.block; -import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; import antibluequirk.alternatingflux.AlternatingFlux; import blusunrize.immersiveengineering.api.IEProperties; @@ -19,6 +20,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -26,18 +28,22 @@ import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; -public class BlockConnector extends BlockAFTileProvider +public class BlockConnector extends BlockUnregisteredIETileProvider { + public static final ResourceLocation id = new ResourceLocation(AlternatingFlux.MODID, "connector"); + public BlockConnector() { - super("connector", Material.IRON, PropertyEnum.create("type", BlockTypes_Connector.class), ItemBlockIEBase.class, IEProperties.FACING_ALL, IEProperties.BOOLEANS[0], IEProperties.BOOLEANS[1], IEProperties.MULTIBLOCKSLAVE, IOBJModelCallback.PROPERTY); + super(BlockConnector.id, Material.IRON, PropertyEnum.create("type", BlockTypes_Connector.class), ItemBlockIEBase.class, IEProperties.FACING_ALL, IEProperties.BOOLEANS[0], IEProperties.BOOLEANS[1], IEProperties.MULTIBLOCKSLAVE, IOBJModelCallback.PROPERTY); this.setHardness(3.0F); this.setResistance(15.0F); this.lightOpacity = 0; this.setMetaBlockLayer(BlockTypes_Connector.RELAY_AF.getMeta(), BlockRenderLayer.SOLID, BlockRenderLayer.TRANSLUCENT); this.setAllNotNormalBlock(); this.setMetaMobilityFlag(BlockTypes_Connector.TRANSFORMER_AF.getMeta(), EnumPushReaction.BLOCK); + this.setCreativeTab(AlternatingFlux.creativeTab); + this.setTranslationKey("connector"); } @Override @@ -45,22 +51,24 @@ public boolean useCustomStateMapper() { return true; } + @Override public String getCustomStateMapping(int meta, boolean itemBlock) { - if(meta==BlockTypes_Connector.TRANSFORMER_AF.getMeta()) - return "transformer_af"; - return null; + return meta == BlockTypes_Connector.TRANSFORMER_AF.getMeta() ? "transformer_af" : null; } + @Override protected BlockStateContainer createBlockState() { BlockStateContainer base = super.createBlockState(); - IUnlistedProperty[] unlisted = (base instanceof ExtendedBlockState) ? ((ExtendedBlockState) base).getUnlistedProperties().toArray(new IUnlistedProperty[0]) : new IUnlistedProperty[0]; - unlisted = Arrays.copyOf(unlisted, unlisted.length+1); - unlisted[unlisted.length-1] = IEProperties.CONNECTIONS; - return new ExtendedBlockState(this, base.getProperties().toArray(new IProperty[0]), unlisted); + Collection> list = new HashSet>(); + if(base instanceof ExtendedBlockState) + list.addAll(((ExtendedBlockState)base).getUnlistedProperties()); + list.add(IEProperties.CONNECTIONS); + return new ExtendedBlockState(this, base.getProperties().toArray(new IProperty[0]), list.toArray(new IUnlistedProperty[0])); } + @Override public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockUnregisteredIETileProvider.java b/src/main/java/antibluequirk/alternatingflux/block/BlockUnregisteredIETileProvider.java new file mode 100644 index 0000000..bc5df20 --- /dev/null +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockUnregisteredIETileProvider.java @@ -0,0 +1,52 @@ +package antibluequirk.alternatingflux.block; + +import antibluequirk.alternatingflux.AlternatingFlux; +import blusunrize.immersiveengineering.common.IEContent; +import blusunrize.immersiveengineering.common.blocks.BlockIEBase; +import blusunrize.immersiveengineering.common.blocks.BlockIETileProvider; +import blusunrize.immersiveengineering.common.blocks.ItemBlockIEBase; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; + +public abstract class BlockUnregisteredIETileProvider & BlockIEBase.IBlockEnum> extends BlockIETileProvider { + private final ItemBlockIEBase itemblock; + + public BlockUnregisteredIETileProvider(ResourceLocation name, Material material, PropertyEnum mainProperty, Class itemBlock, Object... additionalProperties) + { + super(name.getPath(), material, mainProperty, itemBlock, additionalProperties); + + this.itemblock = this.pullItemBlock(itemBlock); + this.itemblock.setRegistryName(name); + this.unregisterBlock(); + + this.setRegistryName(name); + } + + public ItemBlockIEBase getItemBlock() + { + return this.itemblock; + } + + @Override + public String createRegistryName() + { + return AlternatingFlux.MODID + ":" + name; + } + + private final void unregisterBlock() + { + Block rBlock = IEContent.registeredIEBlocks.remove(IEContent.registeredIEBlocks.size() - 1); + if(this != rBlock) throw new IllegalStateException("fixupBlock was not called at the appropriate time, removed block did not match"); + } + + private final ItemBlockIEBase pullItemBlock(Class itemBlock) + { + Item rItem = IEContent.registeredIEItems.remove(IEContent.registeredIEItems.size() - 1); + if(rItem.getClass() != itemBlock) throw new IllegalStateException("fixupBlock was not called at the appropriate time"); + + return (ItemBlockIEBase)rItem; + } +} diff --git a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java old mode 100755 new mode 100644 index 0ea6144..3e58960 --- a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java @@ -57,6 +57,46 @@ public void registerTextures(TextureStitchEvent.Pre event){ event.getMap().registerSprite(AlternatingFlux.TEX_PASSTHROUGH_AF); } + public void registerIEBlockModel(BLOCK block) + { + ResourceLocation blockname = block.getRegistryName(); + Item blockItem = Item.getItemFromBlock(block); + if(blockItem == null) throw new RuntimeException("Item representation for block " + blockname + " doesn't exist!"); + if(block instanceof IIEMetaBlock) + { + IIEMetaBlock ieMetaBlock = (IIEMetaBlock)block; + if(ieMetaBlock.useCustomStateMapper()) ModelLoader.setCustomStateMapper(block, IECustomStateMapper.getStateMapper(ieMetaBlock)); + ModelLoader.setCustomMeshDefinition(blockItem, new ItemMeshDefinition() + { + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) + { + return new ModelResourceLocation(blockname, "inventory"); + } + }); + + for(int meta = 0; meta < ieMetaBlock.getMetaEnums().length; meta++) + { + String location = blockname.toString(); + String prop = ieMetaBlock.appendPropertiesToState()?("inventory,"+ieMetaBlock.getMetaProperty().getName()+"="+ieMetaBlock.getMetaEnums()[meta].toString().toLowerCase(Locale.US)): null; + if(ieMetaBlock.useCustomStateMapper()) + { + String custom = ieMetaBlock.getCustomStateMapping(meta, true); + if(custom!=null) + location += "_"+custom; + } + try + { + ModelLoader.setCustomModelResourceLocation(blockItem, meta, new ModelResourceLocation(location, prop)); + } catch(NullPointerException npe) + { + throw new RuntimeException("WELP! apparently "+ieMetaBlock+" lacks an item!", npe); + } + } + } + else ModelLoader.setCustomModelResourceLocation(blockItem, 0, new ModelResourceLocation(blockname, "inventory")); + } + @SubscribeEvent @SuppressWarnings("deprecation") public void registerModels(ModelRegistryEvent evt) @@ -68,56 +108,13 @@ public void registerModels(ModelRegistryEvent evt) ModelLoader.setCustomModelResourceLocation(AlternatingFlux.item_coil, 0, new ModelResourceLocation(AlternatingFlux.item_coil.getRegistryName(), "inventory")); ModelLoader.setCustomModelResourceLocation(AlternatingFlux.item_wire, 0, new ModelResourceLocation(AlternatingFlux.item_wire.getRegistryName(), "inventory")); - - for(Block block : AlternatingFlux.blocks) - { - final ResourceLocation loc = Block.REGISTRY.getNameForObject(block); - Item blockItem = Item.getItemFromBlock(block); - if(blockItem==null) - throw new RuntimeException("ITEMBLOCK FOR "+loc+" : "+block+" IS NULL"); - if(block instanceof IIEMetaBlock) - { - IIEMetaBlock ieMetaBlock = (IIEMetaBlock)block; - if(ieMetaBlock.useCustomStateMapper()) - ModelLoader.setCustomStateMapper(block, IECustomStateMapper.getStateMapper(ieMetaBlock)); - ModelLoader.setCustomMeshDefinition(blockItem, new ItemMeshDefinition() - { - @Override - public ModelResourceLocation getModelLocation(ItemStack stack) - { - return new ModelResourceLocation(loc, "inventory"); - } - }); - for(int meta = 0; meta < ieMetaBlock.getMetaEnums().length; meta++) - { - String location = loc.toString(); - String prop = ieMetaBlock.appendPropertiesToState()?("inventory,"+ieMetaBlock.getMetaProperty().getName()+"="+ieMetaBlock.getMetaEnums()[meta].toString().toLowerCase(Locale.US)): null; - if(ieMetaBlock.useCustomStateMapper()) - { - String custom = ieMetaBlock.getCustomStateMapping(meta, true); - if(custom!=null) - location += "_"+custom; - } - try - { - ModelLoader.setCustomModelResourceLocation(blockItem, meta, new ModelResourceLocation(location, prop)); - } catch(NullPointerException npe) - { - throw new RuntimeException("WELP! apparently "+ieMetaBlock+" lacks an item!", npe); - } - } - } - //Not needed now - /* else if(block instanceof BlockIEFluid) - mapFluidState(block, ((BlockIEFluid)block).getFluid()); */ - else - ModelLoader.setCustomModelResourceLocation(blockItem, 0, new ModelResourceLocation(loc, "inventory")); - } + this.registerIEBlockModel(AlternatingFlux.block_conn); } + @SubscribeEvent - public void updateConfig(OnConfigChangedEvent e) + public void updateConfig(OnConfigChangedEvent event) { - if (AlternatingFlux.MODID.equals(e.getModID())) + if(event.getModID().equals(AlternatingFlux.MODID)) { ConfigManager.sync(AlternatingFlux.MODID, net.minecraftforge.common.config.Config.Type.INSTANCE); Config.refresh(); diff --git a/src/main/resources/assets/alternatingflux/lang/en_us.lang b/src/main/resources/assets/alternatingflux/lang/en_us.lang index ffdc913..e73a8a2 100755 --- a/src/main/resources/assets/alternatingflux/lang/en_us.lang +++ b/src/main/resources/assets/alternatingflux/lang/en_us.lang @@ -1,7 +1,7 @@ # BLOCKS -tile.alternatingflux.connector.connector_af.name=AF Wire Connector -tile.alternatingflux.connector.relay_af.name=AF Wire Relay -tile.alternatingflux.connector.transformer_af.name=AF Transformer +tile.connector.connector_af.name=AF Wire Connector +tile.connector.relay_af.name=AF Wire Relay +tile.connector.transformer_af.name=AF Transformer # ITEMS item.wire_constantan.name=Constantan Wire From 859551b59ceaba93b8f9ded07bf7aaf9601281e1 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 15:37:26 +0200 Subject: [PATCH 08/12] Removed ordinal parameter from ItemWireCoil The oridinal integer seemed like a remant from copy of the original IE class ItemWireCoil. As such, I removed it to only cover the needs of the AF system. --- .../antibluequirk/alternatingflux/Config.java | 32 ++++---- .../alternatingflux/item/ItemWireCoil.java | 55 ++++++++------ .../alternatingflux/wire/AFWireType.java | 73 +++++++++---------- 3 files changed, 78 insertions(+), 82 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/Config.java b/src/main/java/antibluequirk/alternatingflux/Config.java index 2e1fc59..2c0a63d 100755 --- a/src/main/java/antibluequirk/alternatingflux/Config.java +++ b/src/main/java/antibluequirk/alternatingflux/Config.java @@ -1,6 +1,5 @@ package antibluequirk.alternatingflux; -import antibluequirk.alternatingflux.wire.AFWireType; import blusunrize.immersiveengineering.common.Config.Mapped; import net.minecraftforge.common.config.Config.Comment; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @@ -21,20 +20,19 @@ public class Config { @net.minecraftforge.common.config.Config(modid = AlternatingFlux.MODID) public static class AFConfig { - @Comment({ "The transfer rates for the wires.", "Order: AF" }) - public static int[] wireTransferRate = new int[] { 131072 }; - + @Comment({ "The transfer rates for the wires."}) + public static int wireTransferRate = 131072; + @Comment({ "The percentage of power lost every X blocks of distance for a wire network. (X is equal to the maximum wire length.)", "The default value of 0.005 for AF is approximately equivalent to 10.67-14.93% over 1024 blocks, depending on the capacity penalty.", - "If you'd like to halve that penalty to 5.33-7.47%, set this value to 0.0025.", - "Order: AF" }) - public static double[] wireLossRatio = new double[] { 0.005 }; + "If you'd like to halve that penalty to 5.33-7.47%, set this value to 0.0025."}) + public static double wireLossRatio = 0.005; - @Comment({ "The RGB color of the wires.", "Order: AF" }) - public static int[] wireColouration = new int[] { 0xf6866c }; + @Comment({"The RGB color of the wires."}) + public static int wireColouration = 0xf6866c; - @Comment({ "The maximum length of a single wire. The loss penalty is applied for each of these lengths, so increasing this value increases the efficiency of the wire.", "Order: AF" }) - public static int[] wireLength = { 48 }; + @Comment({"The maximum length of a single wire. The loss penalty is applied for each of these lengths, so increasing this value increases the efficiency of the wire."}) + public static int wireLength = 48; } @@ -43,18 +41,14 @@ public static void preInit(FMLPreInitializationEvent event) { } public static void refresh() { - AFWireType.wire_rates = AFConfig.wireTransferRate; - AFWireType.wire_lossratios = AFConfig.wireLossRatio; - AFWireType.wire_colors = AFConfig.wireColouration; - AFWireType.wire_length = AFConfig.wireLength; - - alternatingflux_afTransferRate = AFConfig.wireTransferRate[0]; - alternatingflux_afkmLossMin = ((1024/AFConfig.wireLength[0])*AFConfig.wireLossRatio[0]*100); + alternatingflux_afTransferRate = AFConfig.wireTransferRate; + alternatingflux_afkmLossMin = ((1024/AFConfig.wireLength)*AFConfig.wireLossRatio*100); alternatingflux_afkmLossMax = alternatingflux_afkmLossMin*1.4; //Crude rounding, because we can't control the formatting. alternatingflux_afkmLossMin = Math.round(alternatingflux_afkmLossMin * 10.0) / 10.0; alternatingflux_afkmLossMax = Math.round(alternatingflux_afkmLossMax * 10.0) / 10.0; - alternatingflux_afMaxLength = AFConfig.wireLength[0]; + alternatingflux_afMaxLength = AFConfig.wireLength; + blusunrize.immersiveengineering.common.Config.validateAndMapValues(Config.class); } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java index 2010c86..13440d9 100755 --- a/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java +++ b/src/main/java/antibluequirk/alternatingflux/item/ItemWireCoil.java @@ -7,6 +7,7 @@ import blusunrize.immersiveengineering.api.ApiUtils; import blusunrize.immersiveengineering.api.Lib; import blusunrize.immersiveengineering.api.energy.wires.IWireCoil; +import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable; import blusunrize.immersiveengineering.api.energy.wires.WireType; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; @@ -21,6 +22,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -31,23 +34,38 @@ import antibluequirk.alternatingflux.wire.AFWireType; public class ItemWireCoil extends Item implements IWireCoil, IColouredItem { - public ItemWireCoil() { + public final Collection> valid_connections; + + public ItemWireCoil() + { super(); + this.valid_connections = new HashSet>(); + + this.valid_connections.add(TileEntityRelayAF.class); + this.valid_connections.add(TileEntityTransformerAF.class); + this.valid_connections.add(TileEntityRedstoneBreaker.class); + this.valid_connections.add(TileEntityEnergyMeter.class); + this.valid_connections.add(TileEntityFeedthrough.class); + this.setRegistryName(new ResourceLocation(AlternatingFlux.MODID, "coil_constantan")); this.setCreativeTab(AlternatingFlux.creativeTab); this.setTranslationKey("coil_constantan"); } @Override - public WireType getWireType(ItemStack stack) { + public WireType getWireType(ItemStack stack) + { return AFWireType.instance; } - + @Override - public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { - if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("linkingPos")) { + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) + { + if(stack.getTagCompound() != null && stack.getTagCompound().hasKey("linkingPos")) + { int[] link = stack.getTagCompound().getIntArray("linkingPos"); - if (link != null && link.length > 3) { + if(link != null && link.length > 3) + { tooltip.add(I18n.format(Lib.DESC_INFO + "attachedToDim", link[1], link[2], link[3], link[0])); } } @@ -60,22 +78,13 @@ public EnumActionResult onItemUseFirst(EntityPlayer player, World world, BlockPo return ApiUtils.doCoilUse(this, player, world, pos, hand, side, hitX, hitY, hitZ); } - /** - * @param wire The wire type to use - * @param targetEntity The target tile entity - * @return True if the cable can be connected to the target tile entity - * @deprecated Currently unused; Marked for removal - */ - @Deprecated - public boolean canConnectCable(WireType wire, TileEntity targetEntity) { - //We specifically only support whitelisted TEs here. - //Without this, you can connect the AF wire to any connectable block that doesn't specifically deny it. - if (!(targetEntity instanceof TileEntityRelayAF) && - !(targetEntity instanceof TileEntityTransformerAF) && - !(targetEntity instanceof TileEntityRedstoneBreaker) && - !(targetEntity instanceof TileEntityEnergyMeter) && - !(targetEntity instanceof TileEntityFeedthrough)) - return false; - return true; + @Override + public boolean canConnectCable(ItemStack stack, TileEntity targettile) + { + for(Class tileclass : this.valid_connections) + { + if(targettile.getClass() == tileclass) return true; + } + return false; } } \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java index 4b8b1cd..88498d9 100755 --- a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java +++ b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java @@ -1,7 +1,7 @@ package antibluequirk.alternatingflux.wire; import antibluequirk.alternatingflux.AlternatingFlux; -import antibluequirk.alternatingflux.Config.AFConfig; +import antibluequirk.alternatingflux.Config; import antibluequirk.alternatingflux.block.BlockTypes_Connector; import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; import blusunrize.immersiveengineering.api.energy.wires.WireApi; @@ -17,24 +17,11 @@ public class AFWireType extends WireType { public static final ResourceLocation texture = new ResourceLocation(AlternatingFlux.MODID, "block/connector/relay_af.obj"); public static AFWireType instance; - final int ordinal; - - public static String[] wire_names = { "AF" }; - public static int[] wire_rates; - public static double[] wire_lossratios; - public static int[] wire_length; - - public static int[] wire_colors; - public static double[] wire_renderdias = { 0.078125 }; - - private AFWireType(int ordinal) { - super(); - this.ordinal = ordinal; - } + private AFWireType() {} public static void init() { - instance = new AFWireType(0); + instance = new AFWireType(); IBlockState validconnection = AlternatingFlux.block_conn.getDefaultState().withProperty(AlternatingFlux.block_conn.property, BlockTypes_Connector.RELAY_AF); WireApi.registerFeedthroughForWiretype(instance, texture, AlternatingFlux.TEX_PASSTHROUGH_AF, new float[]{0, 0, 16, 16}, 0.75, validconnection, 8 * 30F / instance.getTransferRate(), 15, (f)->f); } @@ -43,53 +30,63 @@ public static void init() * In this case, this does not return the loss RATIO but the loss PER BLOCK */ @Override - public double getLossRatio() { - return wire_lossratios[ordinal]; + public double getLossRatio() + { + return Config.AFConfig.wireLossRatio; } @Override - public int getTransferRate() { - return wire_rates[ordinal]; + public int getTransferRate() + { + return Config.AFConfig.wireTransferRate; } @Override - public int getColour(Connection connection) { - return wire_colors[ordinal]; + public int getColour(Connection connection) + { + return Config.AFConfig.wireColouration; } @Override - public double getSlack() { + public double getSlack() + { return 1.002; } @Override @SideOnly(Side.CLIENT) - public TextureAtlasSprite getIcon(Connection connection) { + public TextureAtlasSprite getIcon(Connection connection) + { return iconDefaultWire; } @Override - public int getMaxLength() { - return AFConfig.wireLength[ordinal]; + public int getMaxLength() + { + return Config.AFConfig.wireLength; } @Override - public ItemStack getWireCoil() { - return new ItemStack(AlternatingFlux.item_coil, 1, ordinal); + public ItemStack getWireCoil() + { + return new ItemStack(AlternatingFlux.item_coil); } @Override - public String getUniqueName() { - return wire_names[ordinal]; + public String getUniqueName() + { + return AlternatingFlux.MODID; } @Override - public double getRenderDiameter() { - return wire_renderdias[ordinal]; + public double getRenderDiameter() + { + return 0.078125D; } @Override - public boolean isEnergyWire() { + public boolean isEnergyWire() + { return true; } @@ -102,16 +99,12 @@ public String getCategory() @Override public double getDamageRadius() { - switch (ordinal) - { - case 0://AF - return .5; - } - return 0; + return 0.5; } @Override - public boolean canCauseDamage() { + public boolean canCauseDamage() + { return true; } } \ No newline at end of file From cfe847c9e2ff02a141a35b54337889ac6cc0e4e3 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 18:37:49 +0200 Subject: [PATCH 09/12] Changed config organization Moved the manual managing code to standalone class. --- .../alternatingflux/AlternatingFlux.java | 1 - .../AlternatingFluxConfig.java | 26 +++++++++ .../antibluequirk/alternatingflux/Config.java | 54 ------------------- .../alternatingflux/ManualConstants.java | 47 ++++++++++++++++ .../alternatingflux/client/ClientProxy.java | 15 +----- .../alternatingflux/wire/AFWireType.java | 11 ++-- .../assets/alternatingflux/lang/en_us.lang | 6 +++ 7 files changed, 87 insertions(+), 73 deletions(-) create mode 100755 src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java delete mode 100755 src/main/java/antibluequirk/alternatingflux/Config.java create mode 100644 src/main/java/antibluequirk/alternatingflux/ManualConstants.java diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index a3baf12..931f0b4 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -46,7 +46,6 @@ public ItemStack createIcon() { @EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); - Config.preInit(event); item_wire = new Item().setRegistryName(new ResourceLocation(AlternatingFlux.MODID, "wire_constantan")).setTranslationKey("wire_constantan").setCreativeTab(creativeTab); block_conn = new BlockConnector(); diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java new file mode 100755 index 0000000..bbbc901 --- /dev/null +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java @@ -0,0 +1,26 @@ +package antibluequirk.alternatingflux; + +import net.minecraftforge.common.config.Config; + +@Config(modid = AlternatingFlux.MODID, name = AlternatingFlux.MODID, category = "general") +public class AlternatingFluxConfig { + @Config.Comment({ "The transfer rates for the wires."}) + @Config.LangKey("config.alternatingflux.wireTransferRate.name") + public static int wireTransferRate = 131072; + + @Config.Comment({ + "The percentage of power lost every X blocks of distance for a wire network. (X is equal to the maximum wire length.)", + "The default value of 0.005 for AF is approximately equivalent to 10.67-14.93% over 1024 blocks, depending on the capacity penalty.", + "If you'd like to halve that penalty to 5.33-7.47%, set this value to 0.0025." + }) + @Config.LangKey("config.alternatingflux.wireLossRatio.name") + public static double wireLossRatio = 0.005; + + @Config.Comment({"The RGB values for the color of the wire."}) + @Config.LangKey("config.alternatingflux.wireColouration.name") + public static int wireColouration = 0xf6866c; + + @Config.Comment({"The maximum length of a single wire. ", "The loss penalty is applied for each of these lengths, so increasing this value increases the efficiency of the wire."}) + @Config.LangKey("config.alternatingflux.wireLength.name") + public static int wireLength = 48; +} \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/Config.java b/src/main/java/antibluequirk/alternatingflux/Config.java deleted file mode 100755 index 2c0a63d..0000000 --- a/src/main/java/antibluequirk/alternatingflux/Config.java +++ /dev/null @@ -1,54 +0,0 @@ -package antibluequirk.alternatingflux; - -import blusunrize.immersiveengineering.common.Config.Mapped; -import net.minecraftforge.common.config.Config.Comment; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; - -public class Config { - - @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_int") - public static int alternatingflux_afTransferRate; - - @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_double") - public static double alternatingflux_afkmLossMin; - @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_double") - public static double alternatingflux_afkmLossMax; - - @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_int") - public static int alternatingflux_afMaxLength; - - - @net.minecraftforge.common.config.Config(modid = AlternatingFlux.MODID) - public static class AFConfig { - @Comment({ "The transfer rates for the wires."}) - public static int wireTransferRate = 131072; - - @Comment({ "The percentage of power lost every X blocks of distance for a wire network. (X is equal to the maximum wire length.)", - "The default value of 0.005 for AF is approximately equivalent to 10.67-14.93% over 1024 blocks, depending on the capacity penalty.", - "If you'd like to halve that penalty to 5.33-7.47%, set this value to 0.0025."}) - public static double wireLossRatio = 0.005; - - @Comment({"The RGB color of the wires."}) - public static int wireColouration = 0xf6866c; - - @Comment({"The maximum length of a single wire. The loss penalty is applied for each of these lengths, so increasing this value increases the efficiency of the wire."}) - public static int wireLength = 48; - - } - - public static void preInit(FMLPreInitializationEvent event) { - refresh(); - } - - public static void refresh() { - alternatingflux_afTransferRate = AFConfig.wireTransferRate; - alternatingflux_afkmLossMin = ((1024/AFConfig.wireLength)*AFConfig.wireLossRatio*100); - alternatingflux_afkmLossMax = alternatingflux_afkmLossMin*1.4; - //Crude rounding, because we can't control the formatting. - alternatingflux_afkmLossMin = Math.round(alternatingflux_afkmLossMin * 10.0) / 10.0; - alternatingflux_afkmLossMax = Math.round(alternatingflux_afkmLossMax * 10.0) / 10.0; - alternatingflux_afMaxLength = AFConfig.wireLength; - - blusunrize.immersiveengineering.common.Config.validateAndMapValues(Config.class); - } -} \ No newline at end of file diff --git a/src/main/java/antibluequirk/alternatingflux/ManualConstants.java b/src/main/java/antibluequirk/alternatingflux/ManualConstants.java new file mode 100644 index 0000000..99f2828 --- /dev/null +++ b/src/main/java/antibluequirk/alternatingflux/ManualConstants.java @@ -0,0 +1,47 @@ +package antibluequirk.alternatingflux; + +import blusunrize.immersiveengineering.common.Config.Mapped; +import net.minecraftforge.common.config.ConfigManager; +import net.minecraftforge.fml.client.event.ConfigChangedEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +@EventBusSubscriber +public class ManualConstants { + + @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_int") + public static int alternatingflux_afTransferRate; + + @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_double") + public static double alternatingflux_afkmLossMin; + + @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_double") + public static double alternatingflux_afkmLossMax; + + @Mapped(mapClass = blusunrize.immersiveengineering.common.Config.class, mapName = "manual_int") + public static int alternatingflux_afMaxLength; + + @SubscribeEvent + public static void configChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) + { + if(event.getModID().equals(AlternatingFlux.MODID)) + { + ConfigManager.sync(AlternatingFlux.MODID, net.minecraftforge.common.config.Config.Type.INSTANCE); + ManualConstants.refresh(); + } + } + + public static void refresh() + { + alternatingflux_afTransferRate = AlternatingFluxConfig.wireTransferRate; + alternatingflux_afkmLossMin = ((1024/AlternatingFluxConfig.wireLength)*AlternatingFluxConfig.wireLossRatio*100); + alternatingflux_afkmLossMax = alternatingflux_afkmLossMin*1.4; + // Crude rounding, because we can't control the formatting. + alternatingflux_afkmLossMin = Math.round(alternatingflux_afkmLossMin * 10.0) / 10.0; + alternatingflux_afkmLossMax = Math.round(alternatingflux_afkmLossMax * 10.0) / 10.0; + alternatingflux_afMaxLength = AlternatingFluxConfig.wireLength; + + blusunrize.immersiveengineering.common.Config.validateAndMapValues(ManualConstants.class); + } + +} diff --git a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java index 3e58960..4b014e2 100644 --- a/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java +++ b/src/main/java/antibluequirk/alternatingflux/client/ClientProxy.java @@ -4,7 +4,7 @@ import antibluequirk.alternatingflux.AlternatingFlux; import antibluequirk.alternatingflux.CommonProxy; -import antibluequirk.alternatingflux.Config; +import antibluequirk.alternatingflux.ManualConstants; import blusunrize.immersiveengineering.api.ManualHelper; import blusunrize.immersiveengineering.api.energy.wires.WireApi; import blusunrize.immersiveengineering.client.IECustomStateMapper; @@ -23,8 +23,6 @@ import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.config.ConfigManager; -import net.minecraftforge.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class ClientProxy extends CommonProxy { @@ -39,6 +37,7 @@ public void preInit() { @Override public void postInit() { super.postInit(); + ManualConstants.refresh(); ManualInstance m = ManualHelper.getManual(); m.addEntry("alternatingflux", ManualHelper.CAT_ENERGY, @@ -110,14 +109,4 @@ public void registerModels(ModelRegistryEvent evt) ModelLoader.setCustomModelResourceLocation(AlternatingFlux.item_wire, 0, new ModelResourceLocation(AlternatingFlux.item_wire.getRegistryName(), "inventory")); this.registerIEBlockModel(AlternatingFlux.block_conn); } - - @SubscribeEvent - public void updateConfig(OnConfigChangedEvent event) - { - if(event.getModID().equals(AlternatingFlux.MODID)) - { - ConfigManager.sync(AlternatingFlux.MODID, net.minecraftforge.common.config.Config.Type.INSTANCE); - Config.refresh(); - } - } } diff --git a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java index 88498d9..756083e 100755 --- a/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java +++ b/src/main/java/antibluequirk/alternatingflux/wire/AFWireType.java @@ -1,7 +1,8 @@ package antibluequirk.alternatingflux.wire; +import antibluequirk.alternatingflux.AlternatingFluxConfig; + import antibluequirk.alternatingflux.AlternatingFlux; -import antibluequirk.alternatingflux.Config; import antibluequirk.alternatingflux.block.BlockTypes_Connector; import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection; import blusunrize.immersiveengineering.api.energy.wires.WireApi; @@ -32,19 +33,19 @@ public static void init() @Override public double getLossRatio() { - return Config.AFConfig.wireLossRatio; + return AlternatingFluxConfig.wireLossRatio; } @Override public int getTransferRate() { - return Config.AFConfig.wireTransferRate; + return AlternatingFluxConfig.wireTransferRate; } @Override public int getColour(Connection connection) { - return Config.AFConfig.wireColouration; + return AlternatingFluxConfig.wireColouration; } @Override @@ -63,7 +64,7 @@ public TextureAtlasSprite getIcon(Connection connection) @Override public int getMaxLength() { - return Config.AFConfig.wireLength; + return AlternatingFluxConfig.wireLength; } @Override diff --git a/src/main/resources/assets/alternatingflux/lang/en_us.lang b/src/main/resources/assets/alternatingflux/lang/en_us.lang index e73a8a2..40167b0 100755 --- a/src/main/resources/assets/alternatingflux/lang/en_us.lang +++ b/src/main/resources/assets/alternatingflux/lang/en_us.lang @@ -7,6 +7,12 @@ tile.connector.transformer_af.name=AF Transformer item.wire_constantan.name=Constantan Wire item.coil_constantan.name=AF Wire Coil +# CONFIG +config.alternatingflux.wireTransferRate.name=Wire Transfer Rate +config.alternatingflux.wireLossRatio.name=Wire Loss Ratio +config.alternatingflux.wireColouration.name=Wire Colour +config.alternatingflux.wireLength.name=Wire Max Length + #CREATIVE itemGroup.alternatingflux=Alternating Flux From d403cd867504e1fe1fbf38c96b5bcc9ed449fc14 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 18:48:11 +0200 Subject: [PATCH 10/12] Added config option to disable AF tab creation --- .../alternatingflux/AlternatingFlux.java | 21 +++++++++++++------ .../AlternatingFluxConfig.java | 7 ++++++- .../assets/alternatingflux/lang/en_us.lang | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java index 931f0b4..77d1dcd 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFlux.java @@ -4,6 +4,7 @@ import antibluequirk.alternatingflux.block.BlockConnector; import antibluequirk.alternatingflux.item.ItemWireCoil; +import blusunrize.immersiveengineering.ImmersiveEngineering; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -28,12 +29,7 @@ public class AlternatingFlux { @Mod.Instance(MODID) public static AlternatingFlux instance = new AlternatingFlux(); - public static CreativeTabs creativeTab = new CreativeTabs(MODID) { - @Override - public ItemStack createIcon() { - return new ItemStack(AlternatingFlux.item_coil, 1, 0); - } - }; + public static CreativeTabs creativeTab; public static Item item_conn, item_coil, item_wire; public static BlockConnector block_conn; @@ -47,6 +43,19 @@ public ItemStack createIcon() { public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); + // Initialize the creative tab + if(AlternatingFluxConfig.mergeTab) AlternatingFlux.creativeTab = ImmersiveEngineering.creativeTab; + else + { + AlternatingFlux.creativeTab = new CreativeTabs(MODID) { + @Override + public ItemStack createIcon() + { + return new ItemStack(AlternatingFlux.item_coil, 1, 0); + } + }; + } + item_wire = new Item().setRegistryName(new ResourceLocation(AlternatingFlux.MODID, "wire_constantan")).setTranslationKey("wire_constantan").setCreativeTab(creativeTab); block_conn = new BlockConnector(); item_coil = new ItemWireCoil(); diff --git a/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java b/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java index bbbc901..b016872 100755 --- a/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java +++ b/src/main/java/antibluequirk/alternatingflux/AlternatingFluxConfig.java @@ -4,10 +4,15 @@ @Config(modid = AlternatingFlux.MODID, name = AlternatingFlux.MODID, category = "general") public class AlternatingFluxConfig { - @Config.Comment({ "The transfer rates for the wires."}) + @Config.Comment({"The transfer rates for the wires."}) @Config.LangKey("config.alternatingflux.wireTransferRate.name") public static int wireTransferRate = 131072; + @Config.Comment({"True to disable creation of Alternating Flux creative tab. The items will be available under Immersive Engineering tab"}) + @Config.LangKey("config.alternatingflux.mergeTab.name") + @Config.RequiresMcRestart + public static boolean mergeTab = false; + @Config.Comment({ "The percentage of power lost every X blocks of distance for a wire network. (X is equal to the maximum wire length.)", "The default value of 0.005 for AF is approximately equivalent to 10.67-14.93% over 1024 blocks, depending on the capacity penalty.", diff --git a/src/main/resources/assets/alternatingflux/lang/en_us.lang b/src/main/resources/assets/alternatingflux/lang/en_us.lang index 40167b0..f419bc7 100755 --- a/src/main/resources/assets/alternatingflux/lang/en_us.lang +++ b/src/main/resources/assets/alternatingflux/lang/en_us.lang @@ -12,6 +12,7 @@ config.alternatingflux.wireTransferRate.name=Wire Transfer Rate config.alternatingflux.wireLossRatio.name=Wire Loss Ratio config.alternatingflux.wireColouration.name=Wire Colour config.alternatingflux.wireLength.name=Wire Max Length +config.alternatingflux.mergeTab.name=Merge Tabs #CREATIVE itemGroup.alternatingflux=Alternating Flux From 2f43a5c70fc0ea007dbdc0dca35083a191f43750 Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 19:13:12 +0200 Subject: [PATCH 11/12] Fixed crafting recipes Also, JEI was added as runtime-only dependency, so the recipes are easier to navigate. --- build.gradle | 9 +++++++++ .../assets/alternatingflux/recipes/wire_constantan.json | 2 +- .../assets/alternatingflux/recipes/wirecoil_af.json | 4 ++-- .../assets/alternatingflux/recipes/wirecoil_af2.json | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index f7979d0..9c51485 100755 --- a/build.gradle +++ b/build.gradle @@ -42,10 +42,19 @@ repositories { name 'jared maven' url 'http://blamejared.com/maven' } + maven { + name 'Progwml6 maven' + url 'https://dvs1.progwml6.com/files/maven/' + } + maven { + name 'JEI' + url 'https://modmaven.k-4u.nl' + } } dependencies { deobfCompile "blusunrize:ImmersiveEngineering:0.12-+:deobf" + runtime "mezz.jei:jei_1.12.2:4.15.0.297" } processResources { diff --git a/src/main/resources/assets/alternatingflux/recipes/wire_constantan.json b/src/main/resources/assets/alternatingflux/recipes/wire_constantan.json index 1e778f6..5f0cf33 100755 --- a/src/main/resources/assets/alternatingflux/recipes/wire_constantan.json +++ b/src/main/resources/assets/alternatingflux/recipes/wire_constantan.json @@ -2,7 +2,7 @@ "type": "immersiveengineering:ingredient_shapeless", "damage_tool": 1, "result": { - "item": "alternatingflux:material", + "item": "alternatingflux:wire_constantan", "data": 0 }, "ingredients": [ diff --git a/src/main/resources/assets/alternatingflux/recipes/wirecoil_af.json b/src/main/resources/assets/alternatingflux/recipes/wirecoil_af.json index 6cd69b6..022c0ff 100755 --- a/src/main/resources/assets/alternatingflux/recipes/wirecoil_af.json +++ b/src/main/resources/assets/alternatingflux/recipes/wirecoil_af.json @@ -1,8 +1,8 @@ { "type": "forge:ore_shaped", - "group": "alternatingflux:wirecoil_af", + "group": "alternatingflux:coil_constantan", "result": { - "item": "alternatingflux:wirecoil", + "item": "alternatingflux:coil_constantan", "data": 0, "count": 4 }, diff --git a/src/main/resources/assets/alternatingflux/recipes/wirecoil_af2.json b/src/main/resources/assets/alternatingflux/recipes/wirecoil_af2.json index 06e5e59..1646816 100755 --- a/src/main/resources/assets/alternatingflux/recipes/wirecoil_af2.json +++ b/src/main/resources/assets/alternatingflux/recipes/wirecoil_af2.json @@ -1,8 +1,8 @@ { "type": "forge:ore_shaped", - "group": "alternatingflux:wirecoil_af", + "group": "alternatingflux:coil_constantan", "result": { - "item": "alternatingflux:wirecoil", + "item": "alternatingflux:coil_constantan", "data": 0, "count": 4 }, From 53ebbac07487dbb371fdf369319714275f7ebb3e Mon Sep 17 00:00:00 2001 From: Enginecrafter77 Date: Sun, 9 Aug 2020 19:20:34 +0200 Subject: [PATCH 12/12] Fixed remaining coding issues Fixed 2 switch statements without default case and 1 empty if block. --- .../alternatingflux/block/BlockConnector.java | 3 ++- .../alternatingflux/block/TileEntityRelayAF.java | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java index 9c5f218..9e5f40a 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java +++ b/src/main/java/antibluequirk/alternatingflux/block/BlockConnector.java @@ -125,8 +125,9 @@ public TileEntity createBasicTE(World world, BlockTypes_Connector type) return new TileEntityRelayAF(); case TRANSFORMER_AF: return new TileEntityTransformerAF(); + default: + return null; } - return null; } @Override diff --git a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java index ff7c413..1091d86 100755 --- a/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java +++ b/src/main/java/antibluequirk/alternatingflux/block/TileEntityRelayAF.java @@ -31,9 +31,7 @@ public class TileEntityRelayAF extends TileEntityImmersiveConnectable implements @Override public void update() { - if (!world.isRemote) { - - } else if (firstTick) { + if(world.isRemote && firstTick) { Set conns = ImmersiveNetHandler.INSTANCE.getConnections(world, pos); if (conns != null) for (Connection conn : conns) @@ -151,8 +149,9 @@ public float[] getBlockBounds() { return new float[] { 0, wMin, wMin, length, wMax, wMax }; case WEST: return new float[] { 1 - length, wMin, wMin, 1, wMax, wMax }; + default: + return new float[] { 0, 0, 0, 1, 1, 1 }; } - return new float[] { 0, 0, 0, 1, 1, 1 }; } @Override