From 6e44aeea8db89d57befc352d6aa00cd3152531b7 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 23 Dec 2024 01:01:29 +0100 Subject: [PATCH] return the slab, or suffer my curse --- changelog | 4 +- .../com/hbm/blocks/generic/BlockPedestal.java | 72 +++++++++ .../inventory/gui/GUIScreenClayTablet.java | 141 ++++++++++++++++++ .../inventory/recipes/AmmoPressRecipes.java | 6 +- .../inventory/recipes/PedestalRecipes.java | 70 ++++++++- src/main/java/com/hbm/items/ModItems.java | 2 +- .../hbm/items/armor/ArmorTrenchmaster.java | 6 +- .../com/hbm/items/special/ItemClayTablet.java | 39 +++++ .../weapon/sedna/factory/XFactory12ga.java | 2 +- .../java/com/hbm/main/ModEventHandler.java | 5 +- .../com/hbm/render/util/RenderInfoSystem.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/gui/guide_pedestal.png | Bin 1707 -> 3793 bytes 14 files changed, 334 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java create mode 100644 src/main/java/com/hbm/items/special/ItemClayTablet.java diff --git a/changelog b/changelog index 0e5beef67..b57ae1165 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,7 @@ * All non black powder shotgun shells now have some amount of damage threshold negation in order to not immediately become useless when used against early power armor * Obviously shot will always fare worse against higher tier armor, in those cases either use flechettes, slugs, any of the high tier rounds or a different caliber entirely * Bombers and cargo planes now use interpolation, making their movement smoother and fixing potential desyncs due to TPS +* Trenchmaster armor no longer displays benefits that no longer exist ## Fixed * Fixed 9mm soft points being called ".9mm" @@ -24,4 +25,5 @@ * Fixed JHP's negative armor piercing value not being counted right, breaking the "armor is worth more" system * Fixed the second UZI dealing more damage than it should * Potentially fixed an issue where artillery rockets would sometimes get stuck mid-air -* Fixed the artillery rocket turret's grace range not being 250 as advertised \ No newline at end of file +* Fixed the artillery rocket turret's grace range not being 250 as advertised +* Fixed black powder shotshells using smokeless powder instead of smokeful powder \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 9f4ace30b..6ca0a2586 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -1,6 +1,10 @@ package com.hbm.blocks.generic; +import com.hbm.inventory.recipes.PedestalRecipes; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; import com.hbm.lib.RefStrings; +import com.hbm.particle.helper.ExplosionSmallCreator; +import com.hbm.util.Compat; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -20,6 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class BlockPedestal extends BlockContainer { @@ -108,6 +113,73 @@ public class BlockPedestal extends BlockContainer { super.breakBlock(world, x, y, z, block, meta); } + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block b) { + if(!world.isRemote) { + if(world.isBlockIndirectlyGettingPowered(x, y, z)) { + + TileEntityPedestal nw = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 2 + ForgeDirection.WEST.offsetX * 2, y, z + ForgeDirection.NORTH.offsetZ * 2 + ForgeDirection.WEST.offsetZ * 2)); + TileEntityPedestal n = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 3, y, z + ForgeDirection.NORTH.offsetZ * 3)); + TileEntityPedestal ne = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 2 + ForgeDirection.EAST.offsetX * 2, y, z + ForgeDirection.NORTH.offsetZ * 2 + ForgeDirection.EAST.offsetZ * 2)); + TileEntityPedestal w = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.WEST.offsetX * 3, y, z + ForgeDirection.WEST.offsetZ * 3)); + TileEntityPedestal center = (TileEntityPedestal) world.getTileEntity(x, y, z); + TileEntityPedestal e = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.EAST.offsetX * 3, y, z + ForgeDirection.EAST.offsetZ * 3)); + TileEntityPedestal sw = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 2 + ForgeDirection.WEST.offsetX * 2, y, z + ForgeDirection.SOUTH.offsetZ * 2 + ForgeDirection.WEST.offsetZ * 2)); + TileEntityPedestal s = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 3, y, z + ForgeDirection.SOUTH.offsetZ * 3)); + TileEntityPedestal se = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 2 + ForgeDirection.EAST.offsetX * 2, y, z + ForgeDirection.SOUTH.offsetZ * 2 + ForgeDirection.EAST.offsetZ * 2)); + + TileEntityPedestal[] tileArray = new TileEntityPedestal[] {nw, n, ne, w, center, e, sw, s, se}; + + outer: for(PedestalRecipe recipe : PedestalRecipes.recipes) { + + if(recipe.extra == recipe.extra.FULL_MOON) { + if(world.getCelestialAngle(0) < 0.35 || world.getCelestialAngle(0) > 0.65) continue; + if(world.getMoonPhase() != 0) continue; + } + + if(recipe.extra == recipe.extra.NEW_MOON) { + if(world.getCelestialAngle(0) < 0.35 || world.getCelestialAngle(0) > 0.65) continue; + if(world.getMoonPhase() != 4) continue; + } + + if(recipe.extra == recipe.extra.SUN) { + if(world.getCelestialAngle(0) > 0.15 || world.getCelestialAngle(0) < 0.85) continue; + } + + for(int i = 0; i < 9; i++) { + ItemStack pedestal = tileArray[i] != null ? tileArray[i].item : null; + if(pedestal == null && recipe.input[i] != null) continue outer; + if(pedestal != null && recipe.input[i] == null) continue outer; + if(pedestal == null && recipe.input[i] == null) continue; + + if(!recipe.input[i].matchesRecipe(pedestal, true) || recipe.input[i].stacksize != pedestal.stackSize) continue outer; + } + + for(int i = 0; i < 9; i++) { + if(i == 4) continue; + ItemStack pedestal = tileArray[i] != null ? tileArray[i].item : null; + if(pedestal == null && recipe.input[i] == null) continue; + tileArray[i].item = null; + tileArray[i].markDirty(); + world.markBlockForUpdate(tileArray[i].xCoord, tileArray[i].yCoord, tileArray[i].zCoord); + } + + center.item = recipe.output.copy(); + center.markDirty(); + world.markBlockForUpdate(x, y, z); + ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 1.5, z + 0.5, 10, 2.5F, 1F); + + return; + } + } + } + } + + public static TileEntityPedestal castOrNull(TileEntity tile) { + if(tile instanceof TileEntityPedestal) return (TileEntityPedestal) tile; + return null; + } + public static class TileEntityPedestal extends TileEntity { public ItemStack item; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java b/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java new file mode 100644 index 000000000..0038befa3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java @@ -0,0 +1,141 @@ +package com.hbm.inventory.gui; + +import java.util.List; +import java.util.Random; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.recipes.PedestalRecipes; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIScreenClayTablet extends GuiScreen { + + protected int xSize = 142; + protected int ySize = 84; + protected int guiLeft; + protected int guiTop; + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/guide_pedestal.png"); + + public GUIScreenClayTablet() { } + + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + protected void drawGuiContainerForegroundLayer(int i, int j) { } + + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + if(player.getHeldItem() != null && player.getHeldItem().hasTagCompound() && player.getHeldItem().stackTagCompound.hasKey("tabletSeed") && !PedestalRecipes.recipes.isEmpty()) { + Random rand = new Random(player.getHeldItem().stackTagCompound.getLong("tabletSeed")); + PedestalRecipe recipe = PedestalRecipes.recipes.get(rand.nextInt(PedestalRecipes.recipes.size())); + + if(recipe.extra == recipe.extra.FULL_MOON) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 32, 16, 16); + if(recipe.extra == recipe.extra.NEW_MOON) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 48, 16, 16); + if(recipe.extra == recipe.extra.SUN) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 64, 16, 16); + + for(int l = 0; l < 3; l++) { + for(int r = 0; r < 3; r++) { + if(rand.nextBoolean()) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 16, 16, 16); + } else { + + AStack ingredient = recipe.input[r + l * 3]; + + if(ingredient == null) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 0, 16, 16); + continue; + } + + List inputs = ingredient.extractForNEI(); + ItemStack input = inputs.size() <= 0 ? new ItemStack(ModItems.nothing) : inputs.get((int) (Math.abs(System.currentTimeMillis() / 1000) % inputs.size())); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + FontRenderer font = null; + if(input != null) font = input.getItem().getFontRenderer(recipe.output); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 300.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 7 + r * 27, guiTop + 7 + l * 27); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 7 + r * 27, guiTop + 7 + l * 27, input.stackSize > 1 ? (input.stackSize + "") : null); + itemRender.zLevel = 0.0F; + + GL11.glDisable(GL11.GL_LIGHTING); + this.mc.getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + } + } + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + FontRenderer font = null; + if(recipe.output != null) font = recipe.output.getItem().getFontRenderer(recipe.output); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 300.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), recipe.output, guiLeft + xSize / 2 - 8, guiTop - 20); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), recipe.output, guiLeft + xSize / 2 - 8, guiTop - 20, recipe.output.stackSize > 1 ? (recipe.output.stackSize + "") : null); + itemRender.zLevel = 0.0F; + + GL11.glDisable(GL11.GL_LIGHTING); + + this.mc.getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + + GL11.glDisable(GL11.GL_DEPTH_TEST); + String label = recipe.output.getDisplayName(); + font.drawString(label, guiLeft + (xSize - font.getStringWidth(label)) / 2, guiTop - 30, 0xffffff); + + } else { + + for(int l = 0; l < 3; l++) { + for(int r = 0; r < 3; r++) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 16, 16, 16); + } + } + } + } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + } + + @Override public boolean doesGuiPauseGame() { return false; } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java index eca9aac34..28d02f393 100644 --- a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -197,15 +197,15 @@ public class AmmoPressRecipes extends SerializableRecipe { recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP, 6), null, nugget.copy(6), null, - null, smokeless, null, + null, smokeful, null, null, bpShell, null)); recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP_MAGNUM, 6), null, nugget.copy(8), null, - null, smokeless, null, + null, smokeful, null, null, bpShell, null)); recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP_SLUG, 6), null, lead, null, - null, smokeless, null, + null, smokeful, null, null, bpShell, null)); recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12, 6), diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java index b91856a80..fcbfb1934 100644 --- a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -4,15 +4,22 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static com.hbm.inventory.OreDictManager.*; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumSecretType; +import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.ModItems; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; public class PedestalRecipes extends SerializableRecipe { @@ -23,9 +30,47 @@ public class PedestalRecipes extends SerializableRecipe { public void registerDefaults() { recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_light_revolver_dani), - null, null, null, - null, new ComparableStack(ModItems.gun_light_revolver), null, - null, null, null)); + null, new OreDictStack(PB.plate()), null, + new OreDictStack(GOLD.plate()), new ComparableStack(ModItems.gun_light_revolver), new OreDictStack(GOLD.plate()), + null, new OreDictStack(PB.plate()), null)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_maresleg_broken), + new ComparableStack(ModBlocks.barbed_wire), new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModBlocks.barbed_wire), + new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModItems.gun_maresleg), new OreDictStack(WEAPONSTEEL.plate()), + new ComparableStack(ModBlocks.barbed_wire), new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModBlocks.barbed_wire))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_heavy_revolver_lilmac), + new OreDictStack(WEAPONSTEEL.plate()), new OreDictStack(DIAMOND.gem()), new OreDictStack(WEAPONSTEEL.plate()), + new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.gun_heavy_revolver), null, + null, new OreDictStack(BONE.grip()), new ComparableStack(Items.apple, 3))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_heavy_revolver_protege), + new ComparableStack(ModBlocks.chain, 16), new OreDictStack(CINNABAR.gem()), new ComparableStack(ModBlocks.chain, 16), + new ComparableStack(ModItems.scrap_nuclear), new ComparableStack(ModItems.gun_heavy_revolver), new ComparableStack(ModItems.scrap_nuclear), + new ComparableStack(ModBlocks.chain, 16), new OreDictStack(CINNABAR.gem()), new ComparableStack(ModBlocks.chain, 16))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_flamer_daybreaker), + new OreDictStack(GOLD.plateCast()), new ComparableStack(ModItems.canned_conserve, 1, EnumFoodType.JIZZ), new OreDictStack(GOLD.plateCast()), + new OreDictStack(P_WHITE.ingot()), new ComparableStack(ModItems.gun_flamer), new OreDictStack(P_WHITE.ingot()), + new OreDictStack(GOLD.plateCast()), new ComparableStack(ModItems.stick_dynamite), new OreDictStack(GOLD.plateCast())) + .extra(PedestalExtraCondition.SUN)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_autoshotgun_sexy), + new ComparableStack(ModItems.bolt_spike, 16), new OreDictStack(STAR.ingot(), 4), new ComparableStack(ModItems.bolt_spike, 16), + new ComparableStack(ModItems.card_qos), new ComparableStack(ModItems.gun_autoshotgun), new ComparableStack(ModItems.card_aos), + new ComparableStack(ModItems.bolt_spike, 16), new OreDictStack(STAR.ingot(), 4), new ComparableStack(ModItems.bolt_spike, 16))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_minigun_lacunae), + null, new ComparableStack(ModItems.powder_magic, 4), null, + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.gun_minigun), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), + null, new ComparableStack(ModItems.powder_magic, 4), null) + .extra(PedestalExtraCondition.FULL_MOON)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_folly), + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), + new OreDictStack(BSCCO.ingot(), 16), new OreDictStack(STAR.block(), 64), new OreDictStack(BSCCO.ingot(), 16), + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL)) + .extra(PedestalExtraCondition.FULL_MOON)); } @Override @@ -60,7 +105,12 @@ public class PedestalRecipes extends SerializableRecipe { } } - this.recipes.add(new PedestalRecipe(output, input)); + PedestalRecipe rec = new PedestalRecipe(output, input); + if(obj.has("extra")) { + rec.extra = PedestalExtraCondition.valueOf(obj.get("extra").getAsString()); + } + + this.recipes.add(rec); } @Override @@ -79,15 +129,27 @@ public class PedestalRecipes extends SerializableRecipe { } } writer.endArray(); + + writer.name("extra").value(rec.extra.name()); + } + + public static enum PedestalExtraCondition { + NONE, FULL_MOON, NEW_MOON, SUN } public static class PedestalRecipe { public ItemStack output; public AStack[] input; + public PedestalExtraCondition extra = PedestalExtraCondition.NONE; public PedestalRecipe(ItemStack output, AStack... input) { this.output = output; this.input = input; } + + public PedestalRecipe extra(PedestalExtraCondition extra) { + this.extra = extra; + return this; + } } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index dc05a705e..122914125 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -5219,7 +5219,7 @@ public class ModItems { book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_pages"); holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged"); - clay_tablet = new Item().setUnlocalizedName("clay_tablet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clay_tablet"); + clay_tablet = new ItemClayTablet().setUnlocalizedName("clay_tablet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clay_tablet"); polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID); glitch = new ItemGlitch().setUnlocalizedName("glitch").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glitch_" + MainRegistry.polaroidID); diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index 4967059fc..415da3813 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.render.model.ModelArmorTrenchmaster; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,7 +11,6 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -44,8 +42,8 @@ public class ArmorTrenchmaster extends ArmorFSB { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); + //list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); + //list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); } @Override diff --git a/src/main/java/com/hbm/items/special/ItemClayTablet.java b/src/main/java/com/hbm/items/special/ItemClayTablet.java new file mode 100644 index 000000000..c41a8a1d9 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemClayTablet.java @@ -0,0 +1,39 @@ +package com.hbm.items.special; + +import com.hbm.inventory.gui.GUIScreenClayTablet; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemClayTablet extends Item implements IGUIProvider { + + public ItemClayTablet() { + this.setMaxDamage(0); + this.setMaxStackSize(1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(!world.isRemote && !stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("tabletSeed", player.getRNG().nextLong()); + } + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIScreenClayTablet(); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 5ad1fbd0d..b1aa0cf24 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -102,7 +102,7 @@ public class XFactory12ga { .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO), new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(1, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(LAMBDA_RECOIL_MARESLEG)) diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index e69a50c59..699707de6 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -852,7 +852,8 @@ public class ModEventHandler { if(servo != null && servo.getItem() == ModItems.ballistic_gauntlet) { - BulletConfiguration firedConfig = null; + //TODO: fix this shit + /*BulletConfig firedConfig = null; for(Integer config : HbmCollection.g12) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); @@ -876,7 +877,7 @@ public class ModEventHandler { } player.worldObj.playSoundAtEntity(player, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - } + }*/ } } } diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 28a775097..773c5e618 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -51,7 +51,7 @@ public class RenderInfoSystem { return; //this.messages.put(-666, new InfoEntry(Minecraft.getMinecraft().theWorld.getCelestialAngle(0) + "", 666_666)); - //this.messages.put(-665, new InfoEntry(Minecraft.getMinecraft().theWorld.getCurrentMoonPhaseFactor() + "", 666_666)); + //this.messages.put(-665, new InfoEntry(Minecraft.getMinecraft().theWorld.getMoonPhase() + "", 666_666)); if(this.messages.isEmpty()) return; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 08c9f7719..57070d426 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1782,6 +1782,7 @@ item.cladding_lead.name=Bleibeschläge item.cladding_obsidian.name=Obsidianhaut item.cladding_paint.name=Bleifarbe item.cladding_rubber.name=Gummibeschlag +item.clay_tablet.name=Tontafel item.clip_bf.name=BF-Geschosse im Doppelpack item.clip_bolt_action.name=12x74 Brenneke-Patronenbox item.clip_cryolator.name=Großer Kryogentank diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c74efefc5..0acb14598 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2555,6 +2555,7 @@ item.cladding_lead.name=Lead Cladding item.cladding_obsidian.name=Obsidian Skin item.cladding_paint.name=Lead Paint item.cladding_rubber.name=Rubber Cladding +item.clay_tablet.name=Clay Tablet item.clip_bf.name=BF-Shell Double Pack item.clip_bolt_action.name=Box of 12x74 Slugs item.clip_cryolator.name=Tank of Cryolator Fuel diff --git a/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png index 57c5c39bcedd3f1180161e520413e415c32ccfe0..1e939e6c6182f7d4223b8f526f8194aa279c88f6 100644 GIT binary patch delta 3718 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