diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c6661933d..04c4d4ff6 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -933,6 +933,7 @@ public class ModBlocks { public static final int guiID_fritz = 122; public static Block rbmk_rod; + public static Block rbmk_rod_reasim; public static Block rbmk_control; public static Block rbmk_control_auto; public static Block rbmk_blank; @@ -1747,6 +1748,7 @@ public class ModBlocks { turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); rbmk_rod = new RBMKRod().setBlockName("rbmk_rod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element"); + rbmk_rod_reasim = new RBMKRodReaSim().setBlockName("rbmk_rod_reasim").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_reasim"); rbmk_control = new RBMKControl().setBlockName("rbmk_control").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control"); rbmk_control_auto = new RBMKControlAuto().setBlockName("rbmk_control_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_auto"); rbmk_blank = new RBMKBlank().setBlockName("rbmk_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank"); @@ -2509,6 +2511,7 @@ public class ModBlocks { GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_rod, rbmk_rod.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_rod_reasim, rbmk_rod_reasim.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_control, rbmk_control.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_control_auto, rbmk_control_auto.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_blank, rbmk_blank.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRodReaSim.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRodReaSim.java new file mode 100644 index 000000000..20d34ba7c --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRodReaSim.java @@ -0,0 +1,36 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.BossSpawnHandler; +import com.hbm.tileentity.TileEntityProxyInventory; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRodReaSim; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class RBMKRodReaSim extends RBMKBase { + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= this.offset) + return new TileEntityRBMKRodReaSim(); + + if(hasExtra(meta)) + return new TileEntityProxyInventory(); + + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + BossSpawnHandler.markFBI(player); + return openInv(world, x, y, z, player, ModBlocks.guiID_rbmk_rod); + } + + @Override + public int getRenderType(){ + return this.renderIDRods; + } +} diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 2baf9ea55..ea36c55f9 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -161,6 +161,7 @@ public class RodRecipes { RecipesCommon.addRBMKRod(ModItems.billet_uranium, ModItems.rbmk_fuel_ueu); RecipesCommon.addRBMKRod(ModItems.billet_uranium_fuel, ModItems.rbmk_fuel_meu); RecipesCommon.addRBMKRod(ModItems.billet_thorium_fuel, ModItems.rbmk_fuel_thmeu); + RecipesCommon.addRBMKRod(ModItems.billet_mox_fuel, ModItems.rbmk_fuel_mox); RecipesCommon.addRBMKRod(ModItems.billet_plutonium_fuel, ModItems.rbmk_fuel_lep); RecipesCommon.addRBMKRod(ModItems.billet_pu_mix, ModItems.rbmk_fuel_mep); RecipesCommon.addRBMKRod(ModItems.billet_pu239, ModItems.rbmk_fuel_hep239); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 1ec168871..403a70c4b 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -122,6 +122,7 @@ public class ToolRecipes { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', "ingotAluminum", 'I', "ingotIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', "ingotLead", 'I', "ingotIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', "ingotPolymer", 'S', "plateSteel" })); + GameRegistry.addRecipe(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ModItems.ingot_advanced_alloy, 'C', ModItems.cinnebar, 'X', Items.compass }); //Bobmazon GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); diff --git a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java index 8f7495b63..dd35a904d 100644 --- a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java +++ b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java @@ -3,7 +3,9 @@ package com.hbm.entity.particle; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionNukeGeneric; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; public class EntityOrangeFX extends EntityModFX { @@ -75,10 +77,19 @@ public class EntityOrangeFX extends EntityModFX { if(worldObj.getBlock((int) posX, (int) posY, (int) posZ).getMaterial() != Material.air) { this.setDead(); - for(int a = -1; a < 2; a++) - for(int b = -1; b < 2; b++) - for(int c = -1; c < 2; c++) - ExplosionNukeGeneric.solinium(worldObj, (int) posX + a, (int) posY + b, (int) posZ + c); + for(int a = -1; a < 2; a++) { + for(int b = -1; b < 2; b++) { + for(int c = -1; c < 2; c++) { + + Block bl = worldObj.getBlock((int) posX + a, (int) posY + b, (int) posZ + c); + if(bl == Blocks.grass) { + worldObj.setBlock((int) posX + a, (int) posY + b, (int) posZ + c, Blocks.dirt, 1, 3); + } else { + ExplosionNukeGeneric.solinium(worldObj, (int) posX + a, (int) posY + b, (int) posZ + c); + } + } + } + } } } } diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index 6a19ebb22..119ec8003 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -1,10 +1,12 @@ package com.hbm.extprop; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.main.MainRegistry; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; @@ -48,9 +50,19 @@ public class HbmPlayerProps implements IExtendedEntityProperties { if(key == EnumKeybind.TOGGLE_JETPACK) { this.enableBackpack = !this.enableBackpack; + + if(this.enableBackpack) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON"); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF"); } if(key == EnumKeybind.TOGGLE_HEAD) { this.enableHUD = !this.enableHUD; + + if(this.enableHUD) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON"); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF"); } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8f899e83f..53b3491df 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1117,6 +1117,7 @@ public class ModItems { public static Item survey_scanner; public static Item mirror_tool; public static Item rbmk_tool; + public static Item coltan_tool; public static Item template_folder; public static Item journal_pip; @@ -1744,6 +1745,7 @@ public class ModItems { public static Item battery_spark_cell_2500; public static Item battery_spark_cell_10000; public static Item battery_spark_cell_power; + public static Item cube_power; public static Item battery_su; public static Item battery_su_l; @@ -4228,6 +4230,7 @@ public class ModItems { battery_spark_cell_2500 = new ItemBattery(100000000L * 2500L, 20000000, 20000000).setUnlocalizedName("battery_spark_cell_2500").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_2500"); battery_spark_cell_10000 = new ItemBattery(100000000L * 10000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_10000").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_10000"); battery_spark_cell_power = new ItemBattery(100000000L * 1000000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_power"); + cube_power = new ItemBattery(1000000000000000000L, 1000000000000000L, 1000000000000000L).setUnlocalizedName("cube_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":cube_power"); battery_potato = new ItemBattery(100, 0, 100).setUnlocalizedName("battery_potato").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_potato"); battery_potatos = new ItemPotatos(5000, 0, 100).setUnlocalizedName("battery_potatos").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_potatos"); @@ -4399,6 +4402,7 @@ public class ModItems { survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner"); mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); + coltan_tool = new ItemColtanCompass().setUnlocalizedName("coltan_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coltass"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -5920,6 +5924,7 @@ public class ModItems { GameRegistry.registerItem(battery_spark_cell_2500, battery_spark_cell_2500.getUnlocalizedName()); GameRegistry.registerItem(battery_spark_cell_10000, battery_spark_cell_10000.getUnlocalizedName()); GameRegistry.registerItem(battery_spark_cell_power, battery_spark_cell_power.getUnlocalizedName()); + GameRegistry.registerItem(cube_power, cube_power.getUnlocalizedName()); GameRegistry.registerItem(battery_creative, battery_creative.getUnlocalizedName()); GameRegistry.registerItem(battery_su, battery_su.getUnlocalizedName()); GameRegistry.registerItem(battery_su_l, battery_su_l.getUnlocalizedName()); @@ -6356,6 +6361,7 @@ public class ModItems { GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName()); GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); + GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/WingsMurk.java b/src/main/java/com/hbm/items/armor/WingsMurk.java index 5415e1e8c..3362e0c88 100644 --- a/src/main/java/com/hbm/items/armor/WingsMurk.java +++ b/src/main/java/com/hbm/items/armor/WingsMurk.java @@ -1,5 +1,6 @@ package com.hbm.items.armor; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ModItems; import com.hbm.render.model.ModelArmorWings; @@ -35,6 +36,9 @@ public class WingsMurk extends ItemArmor { public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { + if(player.onGround) + return; + if(player.fallDistance > 0) player.fallDistance = 0; @@ -45,21 +49,59 @@ public class WingsMurk extends ItemArmor { if(player.isSneaking()) { - if(player.motionY < -0.08) { - - double mo = player.motionY * -0.2; - player.motionY += mo; - - Vec3 vec = player.getLookVec(); - vec.xCoord *= mo; - vec.yCoord *= mo; - vec.zCoord *= mo; + if(player.motionY < -0.08) { - player.motionX += vec.xCoord; - player.motionY += vec.yCoord; - player.motionZ += vec.zCoord; - } + double mo = player.motionY * -0.2; + player.motionY += mo; + + Vec3 vec = player.getLookVec(); + vec.xCoord *= mo; + vec.yCoord *= mo; + vec.zCoord *= mo; + + player.motionX += vec.xCoord; + player.motionY += vec.yCoord; + player.motionZ += vec.zCoord; } + } + } + + HbmPlayerProps props = HbmPlayerProps.getData(player); + + if(this == ModItems.wings_murk) { + + if(props.isJetpackActive()) { + + if(player.motionY < 0.6D) + player.motionY += 0.2D; + + } else if(props.enableBackpack && !player.isSneaking()) { + + if(player.motionY < -1) + player.motionY += 0.4D; + else if(player.motionY < -0.1) + player.motionY += 0.2D; + else if(player.motionY < 0) + player.motionY = 0; + } + + if(props.enableBackpack) { + + Vec3 orig = player.getLookVec(); + Vec3 look = Vec3.createVectorHelper(orig.xCoord, 0, orig.zCoord).normalize(); + double mod = player.isSneaking() ? 0.25D : 1D; + + if(player.moveForward != 0) { + player.motionX += look.xCoord * 0.35 * player.moveForward * mod; + player.motionZ += look.zCoord * 0.35 * player.moveForward * mod; + } + + if(player.moveStrafing != 0) { + look.rotateAroundY((float) Math.PI * 0.5F); + player.motionX += look.xCoord * 0.15 * player.moveStrafing * mod; + player.motionZ += look.zCoord * 0.15 * player.moveStrafing * mod; + } + } } } } diff --git a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java new file mode 100644 index 000000000..bad47089e --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java @@ -0,0 +1,137 @@ +package com.hbm.items.tool; + +import java.util.Random; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureCompass; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemColtanCompass extends Item { + + public int lastX = 0; + public int lastZ = 0; + public long lease = 0; + + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean inhand) { + + if(world.isRemote) { + if(stack.hasTagCompound()) { + lastX = stack.stackTagCompound.getInteger("colX"); + lastZ = stack.stackTagCompound.getInteger("colZ"); + lease = System.currentTimeMillis() + 1000; + } + + if(ItemColtanCompass.this.lease < System.currentTimeMillis()) { + lastX = 0; + lastZ = 0; + } + + } else { + if(!stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + + Random colRand = new Random(world.getSeed() + 5); + int colX = (int) (colRand.nextGaussian() * 1500); + int colZ = (int) (colRand.nextGaussian() * 1500); + + stack.stackTagCompound.setInteger("colX", colX); + stack.stackTagCompound.setInteger("colZ", colZ); + } + } + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + if(register instanceof TextureMap) { + TextureMap map = (TextureMap) register; + TextureColtass cumpiss = new TextureColtass(this.getIconString()); + map.setTextureEntry(this.getIconString(), cumpiss); + this.itemIcon = cumpiss; + } else { + this.itemIcon = register.registerIcon(this.getIconString()); + } + } + + @SideOnly(Side.CLIENT) + public class TextureColtass extends TextureCompass { + + public TextureColtass(String texture) { + super(texture); + } + + public void updateAnimation() { + Minecraft minecraft = Minecraft.getMinecraft(); + + if(minecraft.theWorld != null && minecraft.thePlayer != null && !(ItemColtanCompass.this.lastX == 0 && ItemColtanCompass.this.lastZ == 0)) { + this.updateCompass(minecraft.theWorld, minecraft.thePlayer.posX, minecraft.thePlayer.posZ, (double) minecraft.thePlayer.rotationYaw, false, false); + } else { + this.updateCompass((World) null, 0.0D, 0.0D, 0.0D, true, false); + } + } + + public void updateCompass(World world, double x, double z, double yaw, boolean ignoreDestination, boolean instantSnap) { + + if(!this.framesTextureData.isEmpty()) { + double angle = 0.0D; + + if(world != null && !ignoreDestination && world.provider.isSurfaceWorld() && ItemColtanCompass.this.lease > System.currentTimeMillis()) { + + double d4 = (double) ItemColtanCompass.this.lastX - x; + double d5 = (double) ItemColtanCompass.this.lastZ - z; + yaw %= 360.0D; + angle = -((yaw - 90.0D) * Math.PI / 180.0D - Math.atan2(d5, d4)); + + } else { + angle = Math.random() * Math.PI * 2.0D; + } + + if(instantSnap) { + this.currentAngle = angle; + + } else { + double d6; + + for(d6 = angle - this.currentAngle; d6 < -Math.PI; d6 += (Math.PI * 2D)) { + ; + } + + while(d6 >= Math.PI) { + d6 -= (Math.PI * 2D); + } + + if(d6 < -1.0D) { + d6 = -1.0D; + } + + if(d6 > 1.0D) { + d6 = 1.0D; + } + + this.angleDelta += d6 * 0.1D; + this.angleDelta *= 0.8D; + this.currentAngle += this.angleDelta; + } + + int i; + + for(i = (int) ((this.currentAngle / (Math.PI * 2D) + 1.0D) * (double) this.framesTextureData.size()) % this.framesTextureData.size(); i < 0; i = (i + this.framesTextureData.size()) % this.framesTextureData.size()) { + ; + } + + if(i != this.frameCounter) { + this.frameCounter = i; + TextureUtil.uploadTextureMipmap((int[][]) this.framesTextureData.get(this.frameCounter), this.width, this.height, this.originX, this.originY, false, false); + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java b/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java index b24c5d9e2..fdee5a51f 100644 --- a/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java +++ b/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java @@ -1,355 +1,66 @@ package com.hbm.items.tool; -import java.util.List; +import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import net.minecraft.block.Block; -import net.minecraft.block.ITileEntityProvider; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; public class ItemSurveyScanner extends Item { - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) - { - list.add("Right click to perform scan."); - list.add("Shift click to change mode."); - list.add("Current mode: " + (getMode(stack) == 0 ? "Resources" : "Structures")); - } - - public int getMode(ItemStack stack) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setInteger("mode", 0); - return 0; - } else { - return stack.stackTagCompound.getInteger("mode"); - } - } - - public void setMode(ItemStack stack, int mode) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - stack.stackTagCompound.setInteger("mode", mode); - } - - public int getLevel(Block b, int meta, int i) { - - if(i == 0) { - int[] ids = OreDictionary.getOreIDs(new ItemStack(b, 1, meta)); - - for(int j = 0; j < ids.length; j++) { - - String s = OreDictionary.getOreName(ids[j]); - - if(s.length() > 3 && s.substring(0, 3).equals("ore")) - return 1; - } - } else { - if(b == Blocks.planks || b == Blocks.cobblestone || b == Blocks.glass || b == Blocks.stonebrick) - return 1; - if(b instanceof IBomb) - return 100; - if(b instanceof ITileEntityProvider) - return 10; - if(b == Blocks.nether_brick) - return 5; - } - - return 0; - } - @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(player.isSneaking()) { - setMode(stack, (getMode(stack) == 1 ? 0 : 1)); - world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Mode switched.")); + + if(!world.isRemote) { + + int x = (int)Math.floor(player.posX); + int y = (int)Math.floor(player.posY); + int z = (int)Math.floor(player.posZ); + + boolean hasOil = false; + boolean hasColtan = false; + boolean hasDepth = false; + boolean hasSchist = false; + boolean hasAussie = false; + + for(int a = -5; a <= 5; a++) { + for(int b = -5; b <= 5; b++) { + for(int i = y + 15; i > 1; i -= 2) { + + Block block = world.getBlock(x + a * 5, i, z + b * 5); + + if(block == ModBlocks.ore_oil) + hasOil = true; + else if(block == ModBlocks.ore_coltan) + hasColtan = true; + else if(block == ModBlocks.stone_depth) + hasDepth = true; + else if(block == ModBlocks.stone_gneiss) + hasSchist = true; + else if(block == ModBlocks.ore_australium) + hasAussie = true; + } + } } - - } else { - int x = (int)player.posX; - int y = (int)player.posY; - int z = (int)player.posZ; - - int level = 0; - int xOff = -25; - - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - xOff += 5; - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -25), world.getBlockMetadata(x + xOff, i, z + -25), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -20), world.getBlockMetadata(x + xOff, i, z + -20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -15), world.getBlockMetadata(x + xOff, i, z + -15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -10), world.getBlockMetadata(x + xOff, i, z + -10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + -5), world.getBlockMetadata(x + xOff, i, z + -5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 0), world.getBlockMetadata(x + xOff, i, z + 0), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 5), world.getBlockMetadata(x + xOff, i, z + 5), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 10), world.getBlockMetadata(x + xOff, i, z + 10), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 15), world.getBlockMetadata(x + xOff, i, z + 15), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 20), world.getBlockMetadata(x + xOff, i, z + 20), getMode(stack)); - for(int i = y + 15; i > 5; i--) - level += getLevel(world.getBlock(x + xOff, i, z + 25), world.getBlockMetadata(x + xOff, i, z + 25), getMode(stack)); - - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Scanned! Result: " + level)); - } + if(hasOil) + player.addChatComponentMessage(new ChatComponentText("Found OIL!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.BLACK))); + if(hasColtan) + player.addChatComponentMessage(new ChatComponentText("Found COLTAN!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + if(hasDepth) + player.addChatComponentMessage(new ChatComponentText("Found DEPTH ROCK!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY))); + if(hasSchist) + player.addChatComponentMessage(new ChatComponentText("Found SCHIST!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_AQUA))); + if(hasAussie) + player.addChatComponentMessage(new ChatComponentText("Found AUSTRALIUM!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); } player.swingItem(); @@ -358,14 +69,13 @@ public class ItemSurveyScanner extends Item { } - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) - { - if(world.getBlock(x, y, z) == ModBlocks.block_beryllium && player.inventory.hasItem(ModItems.entanglement_kit)) { - player.travelToDimension(1); - return true; - } - - return false; - } + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) { + if(world.getBlock(x, y, z) == ModBlocks.block_beryllium && player.inventory.hasItem(ModItems.entanglement_kit)) { + player.travelToDimension(1); + return true; + } + + return false; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 958d0d27b..1618d69ac 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -46,7 +46,6 @@ import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.NoiseGeneratorOctaves; import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.IWorldGenerator; public class HbmWorldGen implements IWorldGenerator { @@ -166,6 +165,19 @@ public class HbmWorldGen implements IWorldGenerator { DepthDeposit.generateCondition(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); DepthDeposit.generateCondition(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); + Random colRand = new Random(world.getSeed() + 5); + int colX = (int) (colRand.nextGaussian() * 1500); + int colZ = (int) (colRand.nextGaussian() * 1500); + int colRange = 500; + for (int k = 0; k < 6; k++) { + int randPosX = i + rand.nextInt(16); + int randPosY = rand.nextInt(25) + 15; + int randPosZ = j + rand.nextInt(16); + + if(randPosX <= colX + colRange && randPosX >= colX - colRange && randPosZ <= colZ + colRange && randPosZ >= colZ - colRange) + (new WorldGenMinable(ModBlocks.ore_coltan, 3)).generate(world, rand, randPosX, randPosY, randPosZ); + } + for (int k = 0; k < rand.nextInt(4); k++) { int randPosX = i + rand.nextInt(16); int randPosY = rand.nextInt(15) + 15; diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 203e0da27..f674e9ff8 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -77,6 +77,8 @@ public class Library { public static String lag_add = "259785a0-20e9-4c63-9286-ac2f93ff528f"; public static String Pu_238 = "c95fdfd3-bea7-4255-a44b-d21bc3df95e3"; public static String Tankish = "609268ad-5b34-49c2-abba-a9d83229af03"; + public static String SolsticeUnlimitd = "f5574fd2-ec28-4927-9d11-3c0c731771f4"; + public static String FrizzleFrazzle = "fc4cc2ee-12e8-4097-b26a-1c6cb1b96531"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index cdc157a86..006d76de6 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3920)"; + public static final String VERSION = "1.0.27 BETA (3934)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 0d154f2a5..cabaa07a7 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -224,6 +224,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKOutgasser.class, new RenderRBMKLid(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_outgasser")); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKReflector.class, new RenderRBMKLid(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_reflector")); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKLid(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_element")); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKLid(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_element_reasim")); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 89470f872..183369be3 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -752,6 +752,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "C", 'C', ModItems.circuit_targeting_tier1, 'R', ModBlocks.rbmk_control }); GameRegistry.addRecipe(new ItemStack(ModBlocks.rbmk_boiler, 1), new Object[] { "CPC", "CRC", "CPC", 'C', ModItems.board_copper, 'P', ModItems.pipes_steel, 'R', ModBlocks.rbmk_blank }); GameRegistry.addRecipe(new ItemStack(ModBlocks.rbmk_rod, 1), new Object[] { "C", "R", "C", 'C', ModItems.hull_small_steel, 'R', ModBlocks.rbmk_blank }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rbmk_rod_reasim, 1), new Object[] { "ZCZ", "ZRZ", "ZCZ", 'C', ModItems.hull_small_steel, 'R', ModBlocks.rbmk_blank, 'Z', "ingotZirconium" })); GameRegistry.addRecipe(new ItemStack(ModBlocks.rbmk_outgasser, 1), new Object[] { "GHG", "GRG", "GTG", 'G', ModBlocks.steel_grate, 'H', Blocks.hopper, 'T', ModItems.tank_steel, 'R', ModBlocks.rbmk_blank }); GameRegistry.addRecipe(new ItemStack(ModBlocks.rbmk_console, 1), new Object[] { "PPP", "PCP", "PPP", 'C', ModItems.circuit_targeting_tier3, 'P', Items.potato }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.rbmk_loader, 1), new Object[] { "SCS", "CBC", "SCS", 'S', "plateSteel", 'C', "ingotCopper", 'B', ModItems.tank_steel })); @@ -984,6 +985,7 @@ public class CraftingManager { GameRegistry.addSmelting(ModItems.crystal_lithium, new ItemStack(ModItems.lithium, 2), 2.0F); GameRegistry.addSmelting(ModItems.crystal_starmetal, new ItemStack(ModItems.ingot_starmetal, 2), 2.0F); GameRegistry.addSmelting(ModItems.crystal_trixite, new ItemStack(ModItems.ingot_plutonium, 4), 2.0F); + GameRegistry.addSmelting(ModItems.gem_tantalium, new ItemStack(ModItems.ingot_tantalium, 1), 2.0F); GameRegistry.addSmelting(ModItems.circuit_schrabidium, new ItemStack(ModItems.circuit_gold, 1), 1.0F); GameRegistry.addSmelting(ModItems.circuit_gold, new ItemStack(ModItems.circuit_red_copper, 1), 1.0F); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6f3b7f10a..daac57353 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -85,6 +85,7 @@ import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; @Mod(modid = RefStrings.MODID, name = RefStrings.NAME, version = RefStrings.VERSION) public class MainRegistry { @@ -479,6 +480,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityChungus.class, "tileentity_chungus"); GameRegistry.registerTileEntity(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); + GameRegistry.registerTileEntity(TileEntityRBMKRodReaSim.class, "tileentity_rbmk_rod_reasim"); GameRegistry.registerTileEntity(TileEntityRBMKControlManual.class, "tileentity_rbmk_control"); GameRegistry.registerTileEntity(TileEntityRBMKControlAuto.class, "tileentity_rbmk_control_auto"); GameRegistry.registerTileEntity(TileEntityRBMKBlank.class, "tileentity_rbmk_blank"); @@ -1174,9 +1176,11 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(radiationSystem); FMLCommonHandler.instance().bus().register(radiationSystem); - HbmKeybinds.register(); - HbmKeybinds keyHandler = new HbmKeybinds(); - FMLCommonHandler.instance().bus().register(keyHandler); + if(event.getSide() == Side.CLIENT) { + HbmKeybinds.register(); + HbmKeybinds keyHandler = new HbmKeybinds(); + FMLCommonHandler.instance().bus().register(keyHandler); + } } //yes kids, this is where we would usually register commands diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index fac6533f4..c05a80c42 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -732,6 +732,54 @@ public class ModEventHandler { ((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleFall((EntityPlayer)e); } + @SubscribeEvent + public void onWingFlop(TickEvent.PlayerTickEvent event) { + + EntityPlayer player = event.player; + + if(event.phase == TickEvent.Phase.START && player.getUniqueID().toString().equals(Library.SolsticeUnlimitd)) { + + if(player.getCurrentArmor(2) == null && !player.onGround) { + + if(player.fallDistance > 0) + player.fallDistance = 0; + + if(player.motionY < -0.4D) + player.motionY = -0.4D; + + HbmPlayerProps props = HbmPlayerProps.getData(player); + + if(player.getFoodStats().getFoodLevel() > 6) { + + if(props.isJetpackActive()) { + if(player.motionY < 0.4D) + player.motionY += 0.15D; + + if(player.getFoodStats().getSaturationLevel() > 0F) + player.addExhaustion(4F); //burn up saturation so that super-saturating foods have no effect + else + player.addExhaustion(0.2F); //4:1 -> 0.05 hunger per tick or 1 per second + } + } + + Vec3 orig = player.getLookVec(); + Vec3 look = Vec3.createVectorHelper(orig.xCoord, 0, orig.zCoord).normalize(); + double mod = props.isJetpackActive() ? 0.25D : 0.125D; + + if(player.moveForward != 0) { + player.motionX += look.xCoord * 0.35 * player.moveForward * mod; + player.motionZ += look.zCoord * 0.35 * player.moveForward * mod; + } + + if(player.moveStrafing != 0) { + look.rotateAroundY((float) Math.PI * 0.5F); + player.motionX += look.xCoord * 0.15 * player.moveStrafing * mod; + player.motionZ += look.zCoord * 0.15 * player.moveStrafing * mod; + } + } + } + } + @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 047de5bca..5a1771751 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -318,7 +318,7 @@ public class ModEventHandlerClient { } } - if(player.getCurrentArmor(2) == null) + if(player.getCurrentArmor(2) == null && player.getUniqueID().toString().equals(Library.SolsticeUnlimitd)) RenderAccessoryUtility.renderSol(event); } diff --git a/src/main/java/com/hbm/render/model/ModelArmorWings.java b/src/main/java/com/hbm/render/model/ModelArmorWings.java index 3d017a07e..e3a77e0be 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorWings.java +++ b/src/main/java/com/hbm/render/model/ModelArmorWings.java @@ -51,7 +51,7 @@ public class ModelArmorWings extends ModelArmorBase { double px = 0.0625D; double rot = Math.sin((entity.ticksExisted) * 0.2D) * 20; - double rot2 = Math.sin((entity.ticksExisted) * 0.2D - Math.PI * 0.5) * 50 + 35; + double rot2 = Math.sin((entity.ticksExisted) * 0.2D - Math.PI * 0.5) * 50 + 30; int pivotSideOffset = 1; int pivotFrontOffset = 5; diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java index ebf900d9c..96db1f8a7 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java @@ -6,6 +6,7 @@ import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; import net.minecraft.client.renderer.Tessellator; @@ -78,6 +79,8 @@ public class RenderRBMKLid extends TileEntitySpecialRenderer { cherenkov = false; } + if(control instanceof TileEntityRBMKBoiler && meta != RBMKBase.DIR_GLASS_LID.ordinal()) + ResourceManager.rbmk_rods.renderPart("Lid"); ResourceManager.rbmk_element.renderPart("Lid"); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 8ef2acd96..d780035a6 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -38,6 +38,7 @@ public class RenderAccessoryUtility { private static ResourceLocation leftnugget = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeLeftNugget.png"); private static ResourceLocation rightnugget = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeRightNugget.png"); private static ResourceLocation tankish = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeTankish.png"); + private static ResourceLocation frizzlefrazzle = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeFrizzleFrazzle.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -113,6 +114,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.Tankish)) { return tankish; } + if(uuid.equals(Library.FrizzleFrazzle)) { + return frizzlefrazzle; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java index 665d05f2b..d0f9fc9b7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java @@ -17,7 +17,11 @@ public class RBMKDials { public static final String KEY_REACTIVITY_MOD = "dialReactivityMod"; public static final String KEY_SAVE_DIALS = "dialSaveDials"; public static final String KEY_OUTGASSER_MOD = "dialOutgasserSpeedMod"; - public static final String KEV_SURGE_MOD = "dialControlSurgeMod"; + public static final String KEY_SURGE_MOD = "dialControlSurgeMod"; + public static final String KEY_FLUX_RANGE = "dialFluxRange"; + public static final String KEY_REASIM_RANGE = "dialReasimRange"; + public static final String KEY_REASIM_COUNT = "dialReasimCount"; + public static final String KEY_REASIM_MOD = "dialReasimOutputMod"; public static void createDials(World world) { GameRules rules = world.getGameRules(); @@ -34,7 +38,11 @@ public class RBMKDials { rules.setOrCreateGameRule(KEY_REACTIVITY_MOD, "1.0"); rules.setOrCreateGameRule(KEY_SAVE_DIALS, "true"); rules.setOrCreateGameRule(KEY_OUTGASSER_MOD, "1.0"); - rules.setOrCreateGameRule(KEV_SURGE_MOD, "1.0"); + rules.setOrCreateGameRule(KEY_SURGE_MOD, "1.0"); + rules.setOrCreateGameRule(KEY_FLUX_RANGE, "5"); + rules.setOrCreateGameRule(KEY_REASIM_RANGE, "10"); + rules.setOrCreateGameRule(KEY_REASIM_COUNT, "6"); + rules.setOrCreateGameRule(KEY_REASIM_MOD, "1.0"); } } @@ -129,12 +137,48 @@ public class RBMKDials { } /** - * A multiplier for how high the power surge goes when inserting control rods + * A multiplier for how high the power surge goes when inserting control rods. * @param world * @return >0 */ public static double getSurgeMod(World world) { - return Math.max(shittyWorkaroundParseDouble(world.getGameRules().getGameRuleStringValue(KEV_SURGE_MOD), 1.0D), 0.0D); + return Math.max(shittyWorkaroundParseDouble(world.getGameRules().getGameRuleStringValue(KEY_SURGE_MOD), 1.0D), 0.0D); + } + + /** + * Simple integer that decides how far the flux of a normal fuel rod reaches. + * @param world + * @return [1;100] + */ + public static int getFluxRange(World world) { + return MathHelper.clamp_int(shittyWorkaroundParseInt(world.getGameRules().getGameRuleStringValue(KEY_FLUX_RANGE), 5), 1, 100); + } + + /** + * Simple integer that decides how far the flux of a ReaSim fuel rod reaches. + * @param world + * @return [1;100] + */ + public static int getReaSimRange(World world) { + return MathHelper.clamp_int(shittyWorkaroundParseInt(world.getGameRules().getGameRuleStringValue(KEY_REASIM_RANGE), 10), 1, 100); + } + + /** + * Simple integer that decides how many neutrons are created from ReaSim fuel rods. + * @param world + * @return [1;24] + */ + public static int getReaSimCount(World world) { + return MathHelper.clamp_int(shittyWorkaroundParseInt(world.getGameRules().getGameRuleStringValue(KEY_REASIM_COUNT), 6), 1, 24); + } + + /** + * Returns a modifier for the outgoing flux of individual streams from the ReaSim fuel rod to compensate for the potentially increased stream count. + * @param world + * @return >0 + */ + public static double getReaSimOutputMod(World world) { + return Math.max(shittyWorkaroundParseDouble(world.getGameRules().getGameRuleStringValue(KEY_REASIM_MOD), 1.0D), 0.0D); } //why make the double representation accessible in a game rule when you can just force me to add a second pointless parsing operation? diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index a3f1b644f..74119886e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -82,6 +82,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.fluxSlow = 0; hasRod = false; + + super.updateEntity(); } } } @@ -112,81 +114,100 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM ForgeDirection.WEST }; - private void spreadFlux(NType type, double fluxOut) { + protected static NType stream; + + protected void spreadFlux(NType type, double fluxOut) { - int range = 5; + int range = RBMKDials.getFluxRange(worldObj); for(ForgeDirection dir : fluxDirs) { - NType stream = type; + stream = type; double flux = fluxOut; for(int i = 1; i <= range; i++) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i); - - //burn baby burn - if(te instanceof TileEntityRBMKRod) { - TileEntityRBMKRod rod = (TileEntityRBMKRod)te; - - if(rod.getStackInSlot(0) != null && rod.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { - rod.receiveFlux(stream, flux); - break; - } - } - if(te instanceof IRBMKFluxReceiver) { - IRBMKFluxReceiver rod = (IRBMKFluxReceiver)te; - rod.receiveFlux(stream, flux); + + flux = runInteraction(xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i, flux); + + if(flux <= 0) break; - } - - //set neutrons to slow - if(te instanceof TileEntityRBMKControl) { - TileEntityRBMKControl control = (TileEntityRBMKControl)te; - - if(control.getMult() == 0.0D) - break; - - flux *= control.getMult(); - - continue; - } - - //set neutrons to slow - if(te instanceof TileEntityRBMKModerator) { - stream = NType.SLOW; - continue; - } - - //return the neutrons back to this with no further action required - if(te instanceof TileEntityRBMKReflector) { - this.receiveFlux(stream, flux); - break; - } - - //break the neutron flow and nothign else - if(te instanceof TileEntityRBMKAbsorber) { - break; - } - - if(te instanceof TileEntityRBMKBase) { - continue; - } - - int limit = RBMKDials.getColumnHeight(worldObj); - int hits = 0; - for(int h = 0; h <= limit; h++) { - - if(!worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + h, zCoord + dir.offsetZ * i).isOpaqueCube()) - hits++; - } - - if(hits > 0) - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (flux * 0.05F * hits / (float)limit)); } } } + protected double runInteraction(int x, int y, int z, double flux) { + + TileEntity te = worldObj.getTileEntity(x, y, z); + + if(te instanceof TileEntityRBMKBase) { + TileEntityRBMKBase base = (TileEntityRBMKBase) te; + + if(!base.hasLid()) + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (flux * 0.05F)); + } + + //burn baby burn + if(te instanceof TileEntityRBMKRod) { + TileEntityRBMKRod rod = (TileEntityRBMKRod)te; + + if(rod.getStackInSlot(0) != null && rod.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { + rod.receiveFlux(stream, flux); + return 0; + } + } + if(te instanceof IRBMKFluxReceiver) { + IRBMKFluxReceiver rod = (IRBMKFluxReceiver)te; + rod.receiveFlux(stream, flux); + return 0; + } + + //set neutrons to slow + if(te instanceof TileEntityRBMKControl) { + TileEntityRBMKControl control = (TileEntityRBMKControl)te; + + if(control.getMult() == 0.0D) + return 0; + + flux *= control.getMult(); + + return flux; + } + + //set neutrons to slow + if(te instanceof TileEntityRBMKModerator) { + stream = NType.SLOW; + return flux; + } + + //return the neutrons back to this with no further action required + if(te instanceof TileEntityRBMKReflector) { + this.receiveFlux(stream, flux); + return 0; + } + + //break the neutron flow and nothign else + if(te instanceof TileEntityRBMKAbsorber) { + return 0; + } + + if(te instanceof TileEntityRBMKBase) { + return flux; + } + + int limit = RBMKDials.getColumnHeight(worldObj); + int hits = 0; + for(int h = 0; h <= limit; h++) { + + if(!worldObj.getBlock(x, y, z).isOpaqueCube()) + hits++; + } + + if(hits > 0) + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (flux * 0.05F * hits / (float)limit)); + + return 0; + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java new file mode 100644 index 000000000..991c918f6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java @@ -0,0 +1,44 @@ +package com.hbm.tileentity.machine.rbmk; + +import net.minecraft.util.Vec3; + +public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { + + @Override + public String getName() { + return "container.rbmkReaSim"; + } + + @Override + protected void spreadFlux(NType type, double fluxOut) { + + int range = RBMKDials.getReaSimRange(worldObj); + int count = RBMKDials.getReaSimCount(worldObj); + + Vec3 dir = Vec3.createVectorHelper(1, 0, 0); + + for(int i = 1; i < count; i++) { + + stream = type; + double flux = fluxOut * RBMKDials.getReaSimOutputMod(worldObj); + + dir.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); + + for(int j = 1; j <= range; j++) { + + //skip if the position is on the rod itself + if((int)Math.floor(dir.xCoord * j) == 0 && (int)Math.floor(dir.zCoord * j) == 0) + continue; + + //skip if the current position is equal to the last position + if((int)Math.floor(dir.xCoord * j) == (int)Math.floor(dir.xCoord * (j - 1)) && (int)Math.floor(dir.zCoord * j) == (int)Math.floor(dir.zCoord * (j - 1))) + continue; + + flux = runInteraction(xCoord + (int)Math.floor(dir.xCoord * j), yCoord, zCoord + (int)Math.floor(dir.zCoord * j), flux); + + if(flux <= 0) + break; + } + } + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index e1228040f..fad306ff0 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -252,7 +252,8 @@ container.rbmkBoiler=RBMK Dampfkanal container.rbmkControl=RBMK Steuerstäbe container.rbmkControlAuto=RBMK Automatische Steuerstäbe container.rbmkOutgasser=RBMK Bestrahlungskanal -container.rbmkRod=RBMK Steuerstäbe +container.rbmkReaSim=RBMK Brennstäbe (ReaSim) +container.rbmkRod=RBMK Brennstäbe container.reactor=Brutreaktor container.reactorControl=Reaktorfernsteuerung container.reactorLarge=Großer Atomreaktor @@ -377,6 +378,11 @@ hadron.noresult=Kein Ergebnis. hadron.progress=Verarbeite... hadron.success=Abgeschlossen! +hbm.key=NTM Hotkeys +hbm.key.toggleBack=Rucksack umschalten +hbm.key.toggleHUD=HUD umschalten +hbm.key.reload=Nachladen + hbmfluid.acid=Wasserstoffperoxid hbmfluid.amat=Antimaterie hbmfluid.aschrab=Antischrabidium @@ -998,6 +1004,7 @@ item.coin_radiation.name=Strahlungs-Münze item.coin_ufo.name=UFO-Münze item.coin_worm.name=Balls-O-Tron-Münze item.coke.name=Koks +item.coltan_tool.name=Koltass item.combine_scrap.name=CMB Schrott item.component_emitter.name=Emitterkomponente item.component_limiter.name=Stabilisatorkomponente @@ -1035,6 +1042,7 @@ item.crystal_trixite.name=Trixitkristalle item.crystal_tungsten.name=Wolframkristalle item.crystal_uranium.name=Urankristalle item.crystal_xen.name=Künstlicher Xen-Kristall +item.cube_power.name=Electroniumwürfel item.custom_amat.name=AB - Antimaterie-Element item.custom_dirty.name=AB - Schmutziges Element item.custom_fall.name=AB - Abwurf-Upgrade @@ -1482,7 +1490,7 @@ item.jetpack_break.name=Bauarbeiter-Raketenrucksack item.jetpack_fly.name=Raketenrucksack item.jetpack_tank.name=Raketenrucksack-Reservetank item.jetpack_vector.name=Schubvektorgesteuerter Raketenrucksack -item.journal_bj.name=Mit Whiskey durchnässtes Notizbuch +item.journal_bj.name=Mit Whisky durchnässtes Notizbuch item.journal_pip.name=Tagebuch des Überlebenskünstlers item.journal_silver.name=Notizen des Kontraktor's item.key.name=Schlüssel @@ -1837,6 +1845,7 @@ item.particle_lead.name=Bleiionenkapsel item.particle_muon.name=Myonenkapsel item.particle_sparkticle.name=Sparktikelkapsel item.particle_strange.name=Strange-Quark-Kapsel +item.particle_tachyon.name=Tachyonenkapsel item.peas.name=Erbsen item.pedestal_steel.name=Stahlsockel item.pellet_advanced.name=Fortgeschrittenes Watzaufwertugspellet @@ -2446,7 +2455,9 @@ item.weapon_pipe_rusty.name=Der Einstellungskorrigierer item.weapon_saw.name=Ärztlich autorisierter Mord item.weaponized_starblaster_cell.name=§cManipulierte Sternenblaster-Energiezelle§r item.wd40.name=VT-40 -item.wild_p.name=Wild Pegasus Trockener Wiskey +item.wild_p.name=Wild Pegasus Trockener Whisky +item.wings_limp.name=Schlaffe Flügel +item.wings_murk.name=Trübe Flügel item.wire_advanced_alloy.name=Supraleiter item.wire_aluminium.name=Aluminiumdraht item.wire_copper.name=Kupferdraht @@ -3050,6 +3061,7 @@ tile.rbmk_moderator.name=RBMK Graphitmoderator tile.rbmk_outgasser.name=RBMK Bestrahlungskanal tile.rbmk_reflector.name=RBMK Wolframcarbid-Moderator tile.rbmk_rod.name=RBMK Brennstäbe +tile.rbmk_rod_reasim.name=RBMK Brennstäbe (ReaSim) tile.reactor_computer.name=Reaktorsteuerung tile.reactor_conductor.name=Reaktorboiler tile.reactor_control.name=Steuerstäbe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 631cd4857..62055ab65 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -320,6 +320,7 @@ container.rbmkBoiler=RBMK Steam Channel container.rbmkControl=RBMK Control Rods container.rbmkControlAuto=RBMK Automatic Control Rods container.rbmkOutgasser=RBMK Irradiation Channel +container.rbmkReaSim=RBMK Fuel Rod (ReaSim) container.rbmkRod=RBMK Fuel Rod container.reactor=Breeding Reactor container.reactorControl=Reactor Remote Control Block @@ -445,6 +446,11 @@ hadron.noresult=No Result. hadron.progress=In Progress... hadron.success=Completed! +hbm.key=NTM Hotkeys +hbm.key.toggleBack=Toggle Backpack +hbm.key.toggleHUD=Toggle HUD +hbm.key.reload=Reload + hbmfluid.acid=Hydrogen Peroxide hbmfluid.amat=Antimatter hbmfluid.aschrab=Antischrabidium @@ -972,7 +978,7 @@ item.chopper_head.name=Hunter Chopper Cockpit item.chopper_tail.name=Hunter Chopper Tail item.chopper_torso.name=Hunter Chopper Body item.chopper_wing.name=Hunter Chopper Wing -item.cinnebar.name=Cinnibar +item.cinnebar.name=Cinnabar item.circuit_aluminium.name=Basic Circuit item.circuit_bismuth.name=Versatile Chipset item.circuit_bismuth_raw.name=Versatile Chipset Assembly @@ -1066,6 +1072,7 @@ item.coin_radiation.name=Radiation Coin item.coin_ufo.name=UFO Coin item.coin_worm.name=Balls-O-Tron Coin item.coke.name=Coke +item.coltan_tool.name=Coltass item.combine_scrap.name=CMB Scrap Metal item.component_emitter.name=Emitter Component item.component_limiter.name=Stabilizer Component @@ -1103,6 +1110,7 @@ item.crystal_trixite.name=Trixite Crystals item.crystal_tungsten.name=Tungsten Crystals item.crystal_uranium.name=Uranium Crystals item.crystal_xen.name=Artificial Xen Crystal +item.cube_power.name=Electronium Cube item.custom_amat.name=Custom Nuke Antimatter Rod item.custom_dirty.name=Custom Nuke Dirty Rod item.custom_fall.name=Custom Nuke Drop Upgrade @@ -1905,6 +1913,7 @@ item.particle_lead.name=Lead Ion Capsule item.particle_muon.name=Muon Capsule item.particle_sparkticle.name=Sparkticle Capsule item.particle_strange.name=Strange Quark Capsule +item.particle_tachyon.name=Tachyon Capsule item.peas.name=Peas item.pedestal_steel.name=Steel Pedestal item.pellet_advanced.name=Advanced Watz Performance Improver @@ -2515,6 +2524,8 @@ item.weapon_saw.name=Doctor Assisted Homicide item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r item.wd40.name=VT-40 item.wild_p.name=Wild Pegasus Dry Whiskey +item.wings_limp.name=Limp Wings +item.wings_murk.name=Murky Wings item.wire_advanced_alloy.name=Super Conductor item.wire_aluminium.name=Aluminium Wire item.wire_copper.name=Copper Wire @@ -3049,13 +3060,13 @@ tile.ore_aluminium.name=Aluminium Ore tile.ore_asbestos.name=Asbestos Ore tile.ore_australium.name=Australian Ore tile.ore_beryllium.name=Beryllium Ore -tile.ore_cinnebar.name=Cinnibar Ore +tile.ore_cinnebar.name=Cinnabar Ore tile.ore_coal_oil.name=Oily Coal Ore tile.ore_coal_oil_burning.name=Burning Oily Coal Ore tile.ore_coltan.name=Coltan Ore tile.ore_copper.name=Copper Ore tile.ore_daffergon.name=Dellite -tile.ore_depth_cinnebar.name=Depth Cinnibar Ore +tile.ore_depth_cinnebar.name=Depth Cinnabar Ore tile.ore_depth_zirconium.name=Depth Zirconium Ore tile.ore_fluorite.name=Fluorite Ore tile.ore_gneiss_asbestos.name=Schist Asbestos Ore @@ -3134,6 +3145,7 @@ tile.rbmk_moderator.name=RBMK Graphite Moderator tile.rbmk_outgasser.name=RBMK Irradiation Channel tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector tile.rbmk_rod.name=RBMK Fuel Rod +tile.rbmk_rod_reasim.name=RBMK Fuel Rod (ReaSim) tile.reactor_computer.name=Reactor Control tile.reactor_conductor.name=Reactor Boiler tile.reactor_control.name=Control Rods diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim.png new file mode 100644 index 000000000..49c41b87f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_americium.png b/src/main/resources/assets/hbm/textures/items/battery_sc_americium.png new file mode 100644 index 000000000..3ffcde5d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_americium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_gold.png b/src/main/resources/assets/hbm/textures/items/battery_sc_gold.png new file mode 100644 index 000000000..629a0dd49 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_plutonium.png b/src/main/resources/assets/hbm/textures/items/battery_sc_plutonium.png new file mode 100644 index 000000000..653f943a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_plutonium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_polonium.png b/src/main/resources/assets/hbm/textures/items/battery_sc_polonium.png new file mode 100644 index 000000000..caf144316 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_polonium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_technetium.png b/src/main/resources/assets/hbm/textures/items/battery_sc_technetium.png new file mode 100644 index 000000000..949e1c98c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_technetium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_sc_uranium.png b/src/main/resources/assets/hbm/textures/items/battery_sc_uranium.png new file mode 100644 index 000000000..6c9b5a74f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/battery_sc_uranium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coltass.png b/src/main/resources/assets/hbm/textures/items/coltass.png new file mode 100755 index 000000000..880a82d03 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/coltass.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coltass.png.mcmeta b/src/main/resources/assets/hbm/textures/items/coltass.png.mcmeta new file mode 100755 index 000000000..de3267f0d --- /dev/null +++ b/src/main/resources/assets/hbm/textures/items/coltass.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/items/digamma_croissant.png b/src/main/resources/assets/hbm/textures/items/digamma_croissant.png new file mode 100644 index 000000000..56fa005ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/digamma_croissant.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeFrizzleFrazzle.png b/src/main/resources/assets/hbm/textures/models/capes/CapeFrizzleFrazzle.png new file mode 100644 index 000000000..4b5e76d1f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/capes/CapeFrizzleFrazzle.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index d1e6c8bb8..f5e01e752 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27-3920", + "version":"1.0.27-3934", "mcversion": "1.7.10", "url": "", "updateUrl": "",