diff --git a/build.gradle b/build.gradle index a935f04f46..4b7c72f409 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. -version = "1.6.5.2" -version = "1.6.5a-Gv2" +version = "1.6.8.1" +version = "1.6.8a-G" group = "com.hbm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "hbm" diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasBase.java b/src/main/java/com/hbm/blocks/gas/BlockGasBase.java index 37137ce3e1..6aa711a80b 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasBase.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasBase.java @@ -115,11 +115,14 @@ public ForgeDirection getSecondDirection(World world, int x, int y, int z) { } public boolean tryMove(World world, int x, int y, int z, ForgeDirection dir) { + BlockPos newPos = new BlockPos(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - if(world.getBlockState(new BlockPos(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)).getBlock() == Blocks.AIR) { + if (!world.isBlockLoaded(newPos)) { + return false; + } else if (world.getBlockState(newPos).getBlock() == Blocks.AIR) { world.setBlockToAir(new BlockPos(x, y, z)); - world.setBlockState(new BlockPos(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ), this.getDefaultState()); - world.scheduleUpdate(new BlockPos(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ), this, getDelay(world)); + world.setBlockState(newPos, this.getDefaultState()); + world.scheduleUpdate(newPos, this, this.getDelay(world)); return true; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 42a07dbd33..ef7c79d7f3 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -9,6 +9,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -82,7 +83,7 @@ public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, Ent @Override public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, Entity entityIn, boolean isActualState){ AxisAlignedBB box = state.getCollisionBoundingBox(worldIn, pos); - if(box.minY == 0 && box.maxY == 0) + if(box!= null && (box.minY == 0 && box.maxY == 0)) return; super.addCollisionBoxToList(state, worldIn, pos, entityBox, collidingBoxes, entityIn, isActualState); } @@ -101,6 +102,14 @@ public void neighborChanged(IBlockState state, World world, BlockPos pos, Block } super.neighborChanged(state, world, pos, blockIn, fromPos); } + + public boolean isPassable(IBlockAccess worldIn, BlockPos pos) { + return true; + } + + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + return BlockFaceShape.UNDEFINED; + } @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos){ diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockRadGen.java b/src/main/java/com/hbm/blocks/machine/DummyBlockRadGen.java index 6449953fce..e77e1501ad 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockRadGen.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockRadGen.java @@ -6,6 +6,7 @@ import com.hbm.interfaces.IDummy; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.machine.TileEntityDummyPort; import com.hbm.tileentity.machine.TileEntityMachineRadGen; import net.minecraft.block.BlockContainer; @@ -38,7 +39,7 @@ public DummyBlockRadGen(Material m, String s) { @Override public TileEntity createNewTileEntity(World worldIn, int meta) { - return new TileEntityDummy(); + return new TileEntityDummyPort(); } @Override diff --git a/src/main/java/com/hbm/entity/effect/EntityBlackHole.java b/src/main/java/com/hbm/entity/effect/EntityBlackHole.java index 76c1af21c4..ee4670325c 100644 --- a/src/main/java/com/hbm/entity/effect/EntityBlackHole.java +++ b/src/main/java/com/hbm/entity/effect/EntityBlackHole.java @@ -44,6 +44,10 @@ public EntityBlackHole(World w, float size){ this.getDataManager().set(SIZE, size); } + public boolean isImmuneToExplosions() { + return true; + } + @Override public void onUpdate() { super.onUpdate(); diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeElectric.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeElectric.java index 09fc7a1f6a..65ff9861d1 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeElectric.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeElectric.java @@ -33,8 +33,8 @@ public void explode() { { this.setDead(); this.world.createExplosion(this, this.posX, this.posY, this.posZ, 2.0F, true); + this.world.addWeatherEffect(new EntityLightningBolt(this.world, this.posX, this.posY, this.posZ, false)); } - this.world.spawnEntity(new EntityLightningBolt(this.world, this.posX, this.posY, this.posZ, false)); } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java index c768db38de..f08e4944c9 100644 --- a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java +++ b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java @@ -385,7 +385,7 @@ public void onStruckByLightning(EntityLightningBolt p_70077_1_){ protected boolean processInteract(EntityPlayer player, EnumHand hand){ ItemStack itemstack = player.inventory.getCurrentItem(); - if(itemstack.getItem() == Items.FLINT_AND_STEEL) { + if(itemstack!= null && itemstack.getItem() == Items.FLINT_AND_STEEL) { this.world.playSound(null, this.posX + 0.5D, this.posY + 0.5D, this.posZ + 0.5D, SoundEvents.ITEM_FLINTANDSTEEL_USE, this.getSoundCategory(), 1.0F, this.rand.nextFloat() * 0.4F + 0.8F); player.swingArm(hand); diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index fd89be1d36..af4da99d35 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -691,7 +691,7 @@ public static void loadSoliniumFromFile(){ if(blocks.length != 2) continue; String[] modidBlock1 = blocks[0].split(":"); - String[] modidBlock2 = blocks[0].split(":"); + String[] modidBlock2 = blocks[1].split(":"); Block b1 = Block.REGISTRY.getObject(new ResourceLocation(modidBlock1[0], modidBlock1[1])); Block b2 = Block.REGISTRY.getObject(new ResourceLocation(modidBlock2[0], modidBlock2[1])); if(b1 == null || b2 == null){ diff --git a/src/main/java/com/hbm/forgefluid/FFPipeNetworkMk2.java b/src/main/java/com/hbm/forgefluid/FFPipeNetworkMk2.java index 3d69883bbe..d64f8a3c9e 100644 --- a/src/main/java/com/hbm/forgefluid/FFPipeNetworkMk2.java +++ b/src/main/java/com/hbm/forgefluid/FFPipeNetworkMk2.java @@ -63,6 +63,7 @@ public int fill(FluidStack resource, boolean doFill) { int remaining = resource.amount; //Drillgon200: Extra hacky compensation int intRoundingCompensation = resource.amount-part*handlers.size(); + rand.setSeed(((TileEntity)this.fillables.values().iterator().next()).getWorld().getWorldTime()); int randomFillIndex = rand.nextInt(handlers.size()); for(int i = 0; i < handlers.size(); i++){ IFluidHandler consumer = handlers.get(i); diff --git a/src/main/java/com/hbm/forgefluid/FFUtils.java b/src/main/java/com/hbm/forgefluid/FFUtils.java index 29da8aab3a..e23cc85c7d 100644 --- a/src/main/java/com/hbm/forgefluid/FFUtils.java +++ b/src/main/java/com/hbm/forgefluid/FFUtils.java @@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; @@ -768,6 +769,34 @@ public static boolean containsFluid(ItemStack stack, Fluid fluid){ return false; } + public static NBTTagList serializeFluidArray(Fluid[] fluids) { + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < fluids.length; ++i) { + if (fluids[i] != null) { + list.appendTag(new NBTTagString(FluidRegistry.getFluidName(fluids[i]))); + } else { + list.appendTag(new NBTTagString("ntmNullFluid")); + } + } + + return list; + } + + public static void deserializeFluidArray(NBTTagList fluidList, Fluid[] fluids) { + for(int i = 0; i < fluidList.tagCount(); ++i) { + String fluidName = fluidList.getStringTagAt(i); + if (i < fluids.length) { + if (fluidName != null && !fluidName.equals("ntmNullFluid")) { + fluids[i] = FluidRegistry.getFluid(fluidName); + } else { + fluids[i] = null; + } + } + } + + } + public static NBTTagList serializeTankArray(FluidTank[] tanks){ NBTTagList list = new NBTTagList(); for(int i = 0; i < tanks.length; i++) { diff --git a/src/main/java/com/hbm/handler/ArmorUtil.java b/src/main/java/com/hbm/handler/ArmorUtil.java index d3788e1f6e..6dd4b9cd51 100644 --- a/src/main/java/com/hbm/handler/ArmorUtil.java +++ b/src/main/java/com/hbm/handler/ArmorUtil.java @@ -134,7 +134,6 @@ public static void damageSuit(EntityPlayer player, int slot, int amount) { player.inventory.armorInventory.get(slot).setItemDamage(j += amount); if(player.inventory.armorInventory.get(slot).getItemDamage() >= player.inventory.armorInventory.get(slot).getMaxDamage()) { - System.out.println(player.inventory.armorInventory.get(slot).getMaxDamage()); player.inventory.armorInventory.set(slot, ItemStack.EMPTY); } } diff --git a/src/main/java/com/hbm/handler/jei/HbmJeiRegistryPlugin.java b/src/main/java/com/hbm/handler/jei/HbmJeiRegistryPlugin.java index 2bba144203..6165db0231 100644 --- a/src/main/java/com/hbm/handler/jei/HbmJeiRegistryPlugin.java +++ b/src/main/java/com/hbm/handler/jei/HbmJeiRegistryPlugin.java @@ -48,7 +48,7 @@ public List getRecipeWrappers(IRecipeCategory new AssemblerRecipeWrapper(recipe.getKey().toStack(), recipe.getValue(), AssemblerRecipes.time.get(recipe.getKey()))).collect(Collectors.toList()); return list; } else if(focus.getMode() == Mode.OUTPUT) { - return (List) AssemblerRecipes.recipes.entrySet().stream().filter(recipe -> Library.areItemStacksEqualIgnoreCount(recipe.getKey().toStack(), stack)).map(recipe -> new AssemblerRecipeWrapper(recipe.getKey().toStack(), recipe.getValue(), AssemblerRecipes.time.get(recipe.getKey()))).collect(Collectors.toList()); + return (List) AssemblerRecipes.recipes.entrySet().stream().filter(recipe -> Library.areItemStacksCompatible(recipe.getKey().toStack(), stack, false)).map(recipe -> new AssemblerRecipeWrapper(recipe.getKey().toStack(), recipe.getValue(), AssemblerRecipes.time.get(recipe.getKey()))).collect(Collectors.toList()); } } } diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index fa9310b553..95f69f5001 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -366,6 +366,7 @@ private static void registerDefaults() { makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] { new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 14), new OreDictStack("plateSteel", 20), new OreDictStack("plateAluminum", 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), }, 350); makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] { new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 20), new OreDictStack("plateSteel", 24), new OreDictStack("plateAluminum", 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 500); makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] { new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 20), new OreDictStack("plateSteel", 24), new OreDictStack("plateAluminum", 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), }, 600); + makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[]{new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 20), new OreDictStack("plateSteel", 24), new OreDictStack("plateAluminum", 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1)}, 600); makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] { new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 14), new OreDictStack("plateSteel", 20), new OreDictStack("plateAluminum", 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 350); makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] { new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack("plateTitanium", 14), new OreDictStack("plateSteel", 20), new OreDictStack("plateAluminum", 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 350); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] { new OreDictStack("ingotSteel", 2), new ComparableStack(ModItems.ingot_polymer, 8), new OreDictStack("plateIron", 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.DIAMOND, 1), new ComparableStack(ModItems.plate_dalekanium, 3), }, 200); @@ -796,6 +797,7 @@ private static void registerDefaults() { makeRecipe(new ComparableStack(ModBlocks.transition_seal, 1), new AStack[]{new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack("plateSteel", 64), new OreDictStack("plateAdvancedAlloy", 40), new ComparableStack(ModItems.plate_polymer, 36), new OreDictStack("blockSteel", 24), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeYellow", 4)}, 5000); makeRecipe(new ComparableStack(ModBlocks.control0, 1), new AStack[]{new ComparableStack(ModItems.circuit_targeting_tier5), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.wire_copper, 24), new ComparableStack(ModBlocks.pole_top)}, 100); + makeRecipe(new ComparableStack(ModBlocks.railgun_plasma, 1), new AStack[]{new OreDictStack("plateSteel", 24), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModBlocks.machine_lithium_battery, 4), new ComparableStack(ModItems.coil_copper, 16), new ComparableStack(ModItems.coil_copper_torus, 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.circuit_targeting_tier4, 4), new ComparableStack(ModItems.circuit_targeting_tier3, 2), new OreDictStack("ingotPolymer", 4)}, 500); /// HIDDEN /// hidden.add(new ComparableStack(ModBlocks.machine_radgen, 1)); diff --git a/src/main/java/com/hbm/inventory/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/CrystallizerRecipes.java index 8b0e28b095..bd824f9160 100644 --- a/src/main/java/com/hbm/inventory/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/CrystallizerRecipes.java @@ -37,7 +37,7 @@ public static void register() { recipes.put("orePlutonium", new ItemStack(ModItems.crystal_plutonium)); recipes.put("oreTitanium", new ItemStack(ModItems.crystal_titanium)); recipes.put("oreSulfur", new ItemStack(ModItems.crystal_sulfur)); - recipes.put("oreNiter", new ItemStack(ModItems.crystal_niter)); + recipes.put("ore", new ItemStack(ModItems.crystal_niter)); recipes.put("oreSaltpeter", new ItemStack(ModItems.crystal_niter)); recipes.put("oreCopper", new ItemStack(ModItems.crystal_copper)); recipes.put("oreTungsten", new ItemStack(ModItems.crystal_tungsten)); diff --git a/src/main/java/com/hbm/items/gear/RedstoneSword.java b/src/main/java/com/hbm/items/gear/RedstoneSword.java index eb947fbd50..f89f1169fc 100644 --- a/src/main/java/com/hbm/items/gear/RedstoneSword.java +++ b/src/main/java/com/hbm/items/gear/RedstoneSword.java @@ -83,7 +83,6 @@ public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos p return EnumActionResult.PASS; } else { if(worldIn.isAirBlock(editpos) && worldIn.isBlockFullCube(pos)){ - System.out.println(player.getHeldItem(hand).getItemDamage()); worldIn.playSound(x + 0.5D, y + 0.5D, z + 0.5D, SoundEvents.BLOCK_STONE_BREAK, SoundCategory.BLOCKS, 1.0F, itemRand.nextFloat() * 0.4F + 0.8F, false); worldIn.setBlockState(editpos, Blocks.REDSTONE_WIRE.getDefaultState(), 1); player.getHeldItem(hand).damageItem(14, player); diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index 99d958ed93..9a486346f5 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -302,6 +302,7 @@ public ActionResult onItemRightClick(World world, EntityPlayer player player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_drill, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_nuclear, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_nuclear_cluster, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_volcano, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_endo, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_exo, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_doomsday, 1)); diff --git a/src/main/java/com/hbm/items/tool/ItemLock.java b/src/main/java/com/hbm/items/tool/ItemLock.java index 94cadc0b0f..593816e099 100644 --- a/src/main/java/com/hbm/items/tool/ItemLock.java +++ b/src/main/java/com/hbm/items/tool/ItemLock.java @@ -28,23 +28,21 @@ public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos ItemStack stack = player.getHeldItem(hand); if(getPins(stack) != 0) { TileEntity te = world.getTileEntity(pos); - + if(te != null && te instanceof TileEntityLockableBase) { - TileEntityLockableBase tile = (TileEntityLockableBase)te; - - if(tile.isLocked()) - return EnumActionResult.FAIL; - - tile.setPins(getPins(stack)); - tile.lock(); - tile.setMod(lockMod); + TileEntityLockableBase tile = (TileEntityLockableBase) te; - world.playSound(null, player.posX, player.posY, player.posZ, HBMSoundHandler.lockHang, SoundCategory.PLAYERS, 1.0F, 1.0F); - stack.shrink(1); - - return EnumActionResult.SUCCESS; + if (!tile.isLocked() && tile.canLock(player, hand, facing)) { + tile.setPins(getPins(stack)); + tile.lock(); + tile.setMod(this.lockMod); + world.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, HBMSoundHandler.lockHang, SoundCategory.PLAYERS, 1.0F, 1.0F); + stack.shrink(1); + return EnumActionResult.SUCCESS; + } + + return EnumActionResult.FAIL; } - if(te != null && te instanceof TileEntityDummy) { TileEntityDummy dummy = (TileEntityDummy)te; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index b1b8855d66..51606448f6 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "hbm-1.6.5Av2-1.12.2"; + public static final String VERSION = "hbm-1.6.8Av1-1.12.2"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 501fc84029..a8b0b339e4 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -54,6 +54,7 @@ public class CraftingManager { public static RegistryEvent.Register hack; + public static boolean registeringFluids = false; public static void init(){ if(!GeneralConfig.recipes) { @@ -1062,7 +1063,7 @@ public static void reg2(){ addShapedRecipe(new ItemStack(ModItems.syringe_metal_psycho, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.GLOWSTONE_DUST, 'S', ModItems.syringe_metal_empty }); addShapedRecipe(new ItemStack(ModItems.pill_iodine, 8), new Object[] { "IF", 'I', ModItems.powder_iodine, 'F', ModItems.fluorite }); addShapedRecipe(new ItemStack(ModItems.plan_c, 1), new Object[] { "PFP", 'P', ModItems.powder_poison, 'F', ModItems.fluorite }); - addShapelessOreRecipe(new ItemStack(ModItems.radx, 1), new Object[] { "dustCoal", "dustFluorite", "dustFluorite" }); + addShapelessOreRecipe(new ItemStack(ModItems.radx, 1), new Object[] { "dustCoal", "dustCoal", "dustFluorite" }); addShapedRecipe(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.LEATHER, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); addShapedRecipe(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.LEATHER, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); addShapedRecipe(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', Items.LEATHER, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); @@ -1086,7 +1087,7 @@ public static void reg2(){ addShapedOreRecipe(new ItemStack(ModBlocks.rail_booster, 6), new Object[] { "S S", "CIC", "SRS", 'S', "ingotSteel", 'I', "plateIron", 'R', "ingotMingrade", 'C', ModItems.coil_copper }); addShapedRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.bomb_multi), 1), new Object[] { "AAD", "CHF", "AAD", 'A', ModItems.wire_aluminium, 'C', ModItems.circuit_aluminium, 'H', ModItems.hull_small_aluminium, 'F', ModItems.fins_quad_titanium, 'D', new ItemStack(Items.DYE, 1, 15) }); - addShapelessOreRecipe(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.SNOWBALL, "dustNiter", "dustRedstone" }); + addShapelessOreRecipe(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.SNOWBALL, "dustSaltpeter", "dustRedstone" }); addShapelessOreRecipe(new ItemStack(ModItems.powder_poison, 4), new Object[] { Items.SPIDER_EYE, "dustRedstone", "gemQuartz" }); addShapelessOreRecipe(new ItemStack(ModItems.pellet_gas, 2), new Object[] { Items.WATER_BUCKET, "dustGlowstone", "plateSteel" }); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 85cba75bdf..88cbb8a445 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1220,14 +1220,14 @@ public void blockBreak(BlockEvent.BreakEvent event){ @SubscribeEvent public void clientJoinServer(PlayerLoggedInEvent e) { if(e.player instanceof EntityPlayerMP){ - PacketDispatcher.sendTo(new AssemblerRecipeSyncPacket(AssemblerRecipes.recipeList, AssemblerRecipes.hidden), (EntityPlayerMP) e.player); + EntityPlayerMP playerMP = (EntityPlayerMP)e.player; + PacketDispatcher.sendTo(new AssemblerRecipeSyncPacket(AssemblerRecipes.recipeList, AssemblerRecipes.hidden), playerMP); JetpackHandler.playerLoggedIn(e); IHBMData props = HbmCapability.getData(e.player); - - PacketDispatcher.wrapper.sendTo(new KeybindPacket(EnumKeybind.TOGGLE_HEAD, props.getEnableHUD()), (EntityPlayerMP) e.player); - PacketDispatcher.wrapper.sendTo(new KeybindPacket(EnumKeybind.TOGGLE_JETPACK, props.getEnableBackpack()), (EntityPlayerMP) e.player); - } - if(!e.player.world.isRemote) { + + PacketDispatcher.sendTo(new KeybindPacket(EnumKeybind.TOGGLE_HEAD, props.getEnableHUD()), playerMP); + PacketDispatcher.sendTo(new KeybindPacket(EnumKeybind.TOGGLE_JETPACK, props.getEnableBackpack()), playerMP); + e.player.sendMessage(new TextComponentTranslation("Loaded world with Hbm's Nuclear Tech Mod " + RefStrings.VERSION + " for Minecraft 1.12.2!")); if(HTTPHandler.newVersion) { @@ -1239,7 +1239,7 @@ public void clientJoinServer(PlayerLoggedInEvent e) { } if(e.player instanceof EntityPlayerMP && !e.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked")) - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!"), (EntityPlayerMP)e.player); + PacketDispatcher.sendTo(new PlayerInformPacket("Press O to Duck!"), (EntityPlayerMP)e.player); } } diff --git a/src/main/java/com/hbm/particle/bullet_hit/ParticleBulletImpact.java b/src/main/java/com/hbm/particle/bullet_hit/ParticleBulletImpact.java index 6d71e10fba..005a21fad6 100644 --- a/src/main/java/com/hbm/particle/bullet_hit/ParticleBulletImpact.java +++ b/src/main/java/com/hbm/particle/bullet_hit/ParticleBulletImpact.java @@ -3,8 +3,6 @@ import java.nio.IntBuffer; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL33; import org.lwjgl.util.vector.Matrix4f; import org.lwjgl.util.vector.Vector4f; @@ -189,7 +187,6 @@ public void preRender() { GlStateManager.setActiveTexture(GLCompat.GL_TEXTURE0+5); GlStateManager.bindTexture(HbmShaderManager2.depthTexture); GlStateManager.setActiveTexture(GLCompat.GL_TEXTURE0); - System.out.println(GL20.glGetAttribLocation(ResourceManager.bimpact.getShaderId(), "tex")); ResourceManager.bimpact.uniform1i("normalMap", 3); ResourceManager.bimpact.uniform1i("occlusionMap", 4); ResourceManager.bimpact.uniform1i("depthBuffer", 5); diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 9607bb765f..c19d1a100e 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -22,11 +22,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.ITickable; import net.minecraft.util.Rotation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.relauncher.Side; @@ -170,6 +172,15 @@ public void onLoad(){ doorType = ((BlockDoorGeneric)this.getBlockType()).type; } + public boolean canLock(EntityPlayer player, EnumHand hand, EnumFacing facing) { + if (this.redstonePower > 0) { + player.sendMessage(new TextComponentString("Cannot lock while redstone powered")); + return false; + } else { + return canLock(player, hand, facing); + } + } + public boolean tryToggle(EntityPlayer player){ if(state == 0 && redstonePower > 0){ //Redstone "power locks" doors, just like minecraft iron doors diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 4044b9b237..cd01debf49 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -21,13 +21,13 @@ public abstract class TileEntityMachineBase extends TileEntity implements INBTPacketReceiver { public ItemStackHandler inventory; - + private String customName; - + public TileEntityMachineBase(int scount) { this(scount, 64); } - + public TileEntityMachineBase(int scount, int slotlimit) { inventory = new ItemStackHandler(scount){ @Override @@ -46,7 +46,7 @@ public int getSlotLimit(int slot) { public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : getName(); } - + public abstract String getName(); public boolean hasCustomInventoryName() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java index 03db3d3c2b..2d511dd35b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityControlPanel.java @@ -163,5 +163,15 @@ public void receiveControl(NBTTagCompound data){ ControlEvent evt = ControlEvent.readFromNBT(data); panel.controls.get(data.getInteger("click_control")).receiveEvent(evt); } + + } + public void validate() { + super.validate(); + ControlEventSystem.get(this.world).addControllable(this); + } + + public void invalidate() { + super.invalidate(); + ControlEventSystem.get(this.world).removeControllable(this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java index 043be3466d..f38c1c6050 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java @@ -11,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; public class TileEntityLockableBase extends TileEntity { @@ -21,7 +23,11 @@ public class TileEntityLockableBase extends TileEntity { public boolean isLocked() { return isLocked; } - + + public boolean canLock(EntityPlayer player, EnumHand hand, EnumFacing facing) { + return true; + } + public void lock() { if(lock == 0) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java index 77aa6fd68e..6a43584483 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java @@ -124,13 +124,14 @@ private boolean hasSpace(int left, int right) { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); FFUtils.deserializeTankArray(nbt.getTagList("tanks", 10), tanks); + FFUtils.deserializeFluidArray(nbt.getTagList("types", 10), types); } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setTag("tanks", FFUtils.serializeTankArray(tanks)); - + nbt.setTag("types", FFUtils.serializeFluidArray(types)); return nbt; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 4919aa4fc1..f137a56fe8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -10,6 +10,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityMachineBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -58,7 +59,9 @@ protected void onContentsChanged(int slot) { } }; } - + + private static int[] accessibleSlots = new int[]{0}; + public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : "container.radGen"; } @@ -67,6 +70,7 @@ public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } + public void setCustomName(String name) { this.customName = name; } @@ -97,6 +101,14 @@ public NBTTagCompound writeToNBT(NBTTagCompound compound) { compound.setTag("inventory", inventory.serializeNBT()); return super.writeToNBT(compound); } + + public int[] getAccessibleSlotsFromSide(EnumFacing e) { + return accessibleSlots; + } + + public boolean isItemValidForSlot(int i, ItemStack stack) { + return i == 0 && this.getRads(stack) > 0; + } @Override public void update() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 67de1e1cf1..da2f297688 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -29,6 +29,7 @@ import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.relauncher.Side; @@ -38,8 +39,10 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements ITickable, IConsumer { public static Map> radarDetectableEntityMap = new HashMap<>(); - - @SubscribeEvent + + @SubscribeEvent( + priority = EventPriority.HIGHEST + ) public static void onWorldLoad(WorldEvent.Load e){ if(!e.getWorld().isRemote){ radarDetectableEntityMap.put(e.getWorld(), new ArrayList<>()); @@ -56,7 +59,13 @@ public static void onWorldUnload(WorldEvent.Unload e){ @SubscribeEvent public static void entityJoinWorld(EntityJoinWorldEvent e){ if(!e.getWorld().isRemote && (e.getEntity() instanceof EntityPlayer || e.getEntity() instanceof IRadarDetectable)){ - radarDetectableEntityMap.get(e.getWorld()).add(e.getEntity()); + List list = (List)radarDetectableEntityMap.get(e.getWorld()); + if (list == null) { + list = new ArrayList(); + radarDetectableEntityMap.put(e.getWorld(), list); + } + + ((List)list).add(e.getEntity()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index f722cdea05..f4678dc1e4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -56,13 +56,13 @@ public boolean canInsertItem(int slot, ItemStack itemStack, int amount){ @Override public boolean isItemValidForSlot(int i, ItemStack stack){ - if(i == 0) + if (i < 9) { return true; - if(i == 2) - if(stack.getItem() instanceof IBatteryItem || stack.getItem() instanceof ItemBlades) - return true; - - return false; + } else if (i == 29 && stack.getItem() instanceof IBatteryItem) { + return true; + } else { + return (i == 27 || i == 28) && stack.getItem() instanceof ItemBlades; + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 413d2c76b6..2be1dc9a37 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -137,6 +137,9 @@ public void readFromNBT(NBTTagCompound nbt) { feed.readFromNBT(nbt.getCompoundTag("feed")); steam.readFromNBT(nbt.getCompoundTag("steam")); steamType = FluidRegistry.getFluid(nbt.getString("steamType")); + if (this.steamType == null) { + this.steamType = ModForgeFluids.steam; + } } @Override @@ -159,6 +162,9 @@ public void receiveControl(NBTTagCompound data) { if(data.hasKey("compression")) { int newAmount = 0; + if (this.steamType == null) { + this.steamType = ModForgeFluids.steam; + } if(steamType == ModForgeFluids.steam){ steamType = ModForgeFluids.hotsteam; newAmount = steam.getFluidAmount()/10; @@ -186,6 +192,9 @@ public void receiveControl(NBTTagCompound data) { public void networkUnpack(NBTTagCompound nbt){ if(nbt.hasKey("steamType2")){ this.steamType = FluidRegistry.getFluid(nbt.getString("steamType2")); + if (this.steamType == null) { + this.steamType = ModForgeFluids.steam; + } } else { super.networkUnpack(nbt); } diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index a62586412e..c27937b51e 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -4,7 +4,7 @@ "name": "HBM's Nuclear Tech Mod", "description": "A mod that adds all kinds of nukes and other things", "version": "${version}", - "credits": "\n\nHBMMods, creator\nDrillgon200, Original 1.12.2 port\nTheOriginalGolem Custom 1.12.2 Version\n\nSten89, bug tester\nGB_Doge_9000, bug tester\nHoboy, textures and models\nDoctor17, Russian translations\ngrangerave\nrodolphito\n\nCrowbar Collective, gluon gun sounds", + "credits": "\n\nHBMMods, creator\nDrillgon200, Original 1.12.2 port\nTheOriginalGolem Custom 1.12.2 Version\n\nSten89, bug tester\nGB_Doge_9000, bug tester\nHoboy, textures and models\nDoctor17, Russian translations\ngrangerave\nrodolphito\nmexikoedi, log spam fix\n\nCrowbar Collective, gluon gun sounds", "logoFile": "assets/hbm/textures/logo.png", "mcversion": "${mcversion}", "url": "https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT",