Merge remote-tracking branch 'origin/master'

This commit is contained in:
Vaern 2021-12-28 17:40:27 -08:00
commit e0433a3174
28 changed files with 434 additions and 172 deletions

View File

@ -1,5 +1,7 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
@ -28,6 +30,8 @@ import net.minecraft.world.World;
public class NTMAnvil extends BlockFalling implements ITooltipProvider { public class NTMAnvil extends BlockFalling implements ITooltipProvider {
public final int tier; public final int tier;
public static final HashMap<Integer, List<NTMAnvil>> tierMap = new HashMap();
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
private IIcon iconTop; private IIcon iconTop;
@ -38,6 +42,27 @@ public class NTMAnvil extends BlockFalling implements ITooltipProvider {
this.setHardness(5.0F); this.setHardness(5.0F);
this.setResistance(100.0F); this.setResistance(100.0F);
this.tier = tier; this.tier = tier;
List<NTMAnvil> anvils = tierMap.get((Integer)tier);
if(anvils == null)
anvils = new ArrayList();
anvils.add(this);
tierMap.put((Integer)tier, anvils);
}
public static List<ItemStack> getAnvilsFromTier(int tier) {
List<NTMAnvil> anvils = tierMap.get((Integer)tier);
if(anvils != null) {
List<ItemStack> stacks = new ArrayList();
for(NTMAnvil anvil : anvils)
stacks.add(new ItemStack(anvil));
return stacks;
}
return new ArrayList();
} }
@Override @Override

View File

@ -1,5 +1,7 @@
package com.hbm.handler; package com.hbm.handler;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockBobble.BobbleType;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.tool.IItemAbility; import com.hbm.items.tool.IItemAbility;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
@ -20,6 +22,7 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityMagmaCube; import net.minecraft.entity.monster.EntityMagmaCube;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntitySlime; import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.monster.EntityZombie;
@ -316,4 +319,35 @@ public abstract class WeaponAbility {
return I18n.format(getName()); return I18n.format(getName());
} }
} }
public static class BobbleAbility extends WeaponAbility {
@Override
public void onHit(World world, EntityPlayer player, Entity victim, IItemAbility tool) {
if(victim instanceof EntityMob && ((EntityMob) victim).getHealth() <= 0.0F) {
EntityMob mob = (EntityMob) victim;
int chance = 1000;
if(mob.getMaxHealth() > 20) {
chance = 750;
}
if(world.rand.nextInt(chance) == 0)
mob.entityDropItem(new ItemStack(ModBlocks.bobblehead, 1, world.rand.nextInt(BobbleType.values().length - 1) + 1), 0.0F);
}
}
@Override
public String getName() {
return "weapon.ability.bobble";
}
@Override
public String getFullName() {
return I18n.format(getName());
}
}
} }

View File

@ -2,25 +2,27 @@ package com.hbm.handler.nei;
import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect;
import java.util.Arrays; import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.lwjgl.opengl.GL11; import com.hbm.blocks.machine.NTMAnvil;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.inventory.gui.GUIAnvil;
import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes;
import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe;
import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput;
import com.hbm.inventory.recipes.anvil.AnvilRecipes.OverlayType;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.util.ItemStackUtil;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.NEIServerUtils; import codechicken.nei.NEIServerUtils;
import codechicken.nei.PositionedStack; import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler; import codechicken.nei.recipe.TemplateRecipeHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class AnvilRecipeHandler extends TemplateRecipeHandler { public class AnvilRecipeHandler extends TemplateRecipeHandler {
@ -31,22 +33,87 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { public class RecipeSet extends TemplateRecipeHandler.CachedRecipe {
PositionedStack output; List<PositionedStack> input = new ArrayList();
List<PositionedStack> output = new ArrayList();
PositionedStack anvil;
int tier; int tier;
OverlayType shape;
public RecipeSet(ItemStack output, int tier) { public RecipeSet(List<Object> in, List<Object> out, int tier) {
this.output = new PositionedStack(output, 111, 24);
//not the prettiest of solutions but certainly the most pleasant to work with
int inLine = 1;
int outLine = 1;
int inOX = 0;
int inOY = 0;
int outOX = 0;
int outOY = 0;
int anvX = 0;
int anvY = 31;
if(in.size() == 1 && out.size() == 1) {
shape = OverlayType.SMITHING;
inOX = 48;
inOY = 24;
outOX = 102;
outOY = 24;
anvX = 75;
} else if(in.size() == 1 && out.size() > 1) {
shape = OverlayType.RECYCLING;
outLine = 6;
inOX = 12;
inOY = 24;
outOX = 48;
outOY = 6;
anvX = 30;
} else if(in.size() > 1 && out.size() == 1) {
shape = OverlayType.CONSTRUCTION;
inLine = 6;
inOX = 12;
inOY = 6;
outOX = 138;
outOY = 24;
anvX = 120;
} else {
shape = OverlayType.NONE;
inLine = 4;
outLine = 4;
inOX = 3;
inOY = 6;
outOX = 93;
outOY = 6;
anvX = 75;
}
for(int i = 0; i < in.size(); i++) {
this.input.add(new PositionedStack(in.get(i), inOX + 18 * (i % inLine), inOY + 18 * (i / inLine)));
}
for(int i = 0; i < out.size(); i++) {
this.output.add(new PositionedStack(out.get(i), outOX + 18 * (i % outLine), outOY + 18 * (i / outLine)));
}
this.anvil = new PositionedStack(NTMAnvil.getAnvilsFromTier(tier), anvX, anvY);
this.tier = tier; this.tier = tier;
} }
@Override @Override
public List<PositionedStack> getIngredients() { public List<PositionedStack> getIngredients() {
return getCycledIngredients(cycleticks / 48, Arrays.asList(output)); return getCycledIngredients(cycleticks / 48, input);
} }
@Override @Override
public PositionedStack getResult() { public PositionedStack getResult() {
return output; return output.get(0);
}
@Override
public List<PositionedStack> getOtherStacks() {
List<PositionedStack> other = new ArrayList();
other.addAll(output);
other.add(anvil);
return getCycledIngredients(cycleticks / 48, other);
} }
} }
@ -62,7 +129,7 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
List<AnvilConstructionRecipe> recipes = AnvilRecipes.getConstruction(); List<AnvilConstructionRecipe> recipes = AnvilRecipes.getConstruction();
for(AnvilConstructionRecipe recipe : recipes) { for(AnvilConstructionRecipe recipe : recipes) {
this.arecipes.add(new RecipeSet(recipe.output.get(0).stack.copy(), recipe.tierLower)); this.addRecipeToList(recipe);
} }
} else { } else {
super.loadCraftingRecipes(outputId, results); super.loadCraftingRecipes(outputId, results);
@ -78,7 +145,8 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
for(AnvilOutput out : recipe.output) { for(AnvilOutput out : recipe.output) {
if(NEIServerUtils.areStacksSameTypeCrafting(out.stack, result)) { if(NEIServerUtils.areStacksSameTypeCrafting(out.stack, result)) {
this.arecipes.add(new RecipeSet(recipe.output.get(0).stack.copy(), recipe.tierLower)); this.addRecipeToList(recipe);
break;
} }
} }
} }
@ -96,39 +164,92 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
@Override @Override
public void loadUsageRecipes(ItemStack ingredient) { public void loadUsageRecipes(ItemStack ingredient) {
List<AnvilConstructionRecipe> recipes = AnvilRecipes.getConstruction();
for(AnvilConstructionRecipe recipe : recipes) {
outer:
for(AStack in : recipe.input) {
List<ItemStack> stacks = in.extractForNEI();
for(ItemStack stack : stacks) {
if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) {
this.addRecipeToList(recipe);
break outer;
}
}
}
}
}
private void addRecipeToList(AnvilConstructionRecipe recipe) {
List<Object> ins = new ArrayList();
for(AStack input : recipe.input) {
ins.add(input.extractForNEI());
}
List<Object> outs = new ArrayList();
for(AnvilOutput output : recipe.output) {
ItemStack stack = output.stack.copy();
if(output.chance != 1) {
ItemStackUtil.addTooltipToStack(stack, EnumChatFormatting.RED + "" + (((int)(output.chance * 1000)) / 10D) + "%");
}
outs.add(stack);
}
this.arecipes.add(new RecipeSet(ins, outs, recipe.tierLower));
} }
@Override @Override
public void loadTransferRects() { public void loadTransferRects() {
}
@Override
public void drawExtras(int recipe) {
RecipeSet rec = (RecipeSet) this.arecipes.get(recipe);
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
for(int i = 0; i < 3; i++) //hey asshole, stop nulling my fucking lists
for(int j = 0; j < 3; j++) transferRectsGui = new LinkedList<RecipeTransferRect>();
fontRenderer.drawString("Tier " + rec.tier + " anvil", 51 + i, 50 + j, 0x000000); guiGui = new LinkedList<Class<? extends GuiContainer>>();
fontRenderer.drawString("Tier " + rec.tier + " anvil", 52, 51, 0xffffff);
}
@Override transferRectsGui.add(new RecipeTransferRect(new Rectangle(11, 42, 36, 18), "ntmAnvil"));
public int recipiesPerPage() { transferRectsGui.add(new RecipeTransferRect(new Rectangle(65, 42, 36, 18), "ntmAnvil"));
return 1;
guiGui.add(GUIAnvil.class);
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
} }
@Override @Override
public String getGuiTexture() { public String getGuiTexture() {
return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png"; return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png";
} }
@Override @Override
public void drawBackground(int recipeIndex) { public void drawBackground(int recipe) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); super.drawBackground(recipe);
GuiDraw.changeTexture(getGuiTexture());
drawTexturedModalRect(0, 0, 5, 11, 166, 120); RecipeSet set = (RecipeSet) this.arecipes.get(recipe);
switch(set.shape) {
case NONE:
drawTexturedModalRect(2, 5, 5, 87, 72, 54); //in
drawTexturedModalRect(92, 5, 5, 87, 72, 54); //out
drawTexturedModalRect(74, 14, 131, 96, 18, 36); //operation
break;
case SMITHING:
drawTexturedModalRect(47, 23, 113, 105, 18, 18); //in
drawTexturedModalRect(101, 23, 113, 105, 18, 18); //out
drawTexturedModalRect(74, 14, 149, 96, 18, 36); //operation
break;
case CONSTRUCTION:
drawTexturedModalRect(11, 5, 5, 87, 108, 54); //in
drawTexturedModalRect(137, 23, 113, 105, 18, 18); //out
drawTexturedModalRect(119, 14, 167, 96, 18, 36); //operation
break;
case RECYCLING:
drawTexturedModalRect(11, 23, 113, 105, 18, 18); //in
drawTexturedModalRect(47, 5, 5, 87, 108, 54); //out
drawTexturedModalRect(29, 14, 185, 96, 18, 36); //operation
break;
}
} }
} }

View File

@ -140,6 +140,9 @@ public class HazardRegistry {
HazardSystem.register(Items.gunpowder, makeData(EXPLOSIVE, 1F)); HazardSystem.register(Items.gunpowder, makeData(EXPLOSIVE, 1F));
HazardSystem.register(Blocks.tnt, makeData(EXPLOSIVE, 4F)); HazardSystem.register(Blocks.tnt, makeData(EXPLOSIVE, 4F));
HazardSystem.register(Items.pumpkin_pie, makeData(EXPLOSIVE, 4F)); HazardSystem.register(Items.pumpkin_pie, makeData(EXPLOSIVE, 4F));
HazardSystem.register(ModItems.ball_dynamite, makeData(EXPLOSIVE, 2F));
HazardSystem.register(ModItems.stick_dynamite, makeData(EXPLOSIVE, 1F));
HazardSystem.register("dustCoal", makeData(COAL, powder)); HazardSystem.register("dustCoal", makeData(COAL, powder));
HazardSystem.register("dustTinyCoal", makeData(COAL, powder_tiny)); HazardSystem.register("dustTinyCoal", makeData(COAL, powder_tiny));

View File

@ -260,7 +260,7 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new ComparableStack(ModItems.wire_aluminium, 4), new OreDictStack(REDSTONE.dust(), 2), new ComparableStack(ModBlocks.steel_roof, 5), },50); makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new ComparableStack(ModItems.wire_aluminium, 4), new OreDictStack(REDSTONE.dust(), 2), new ComparableStack(ModBlocks.steel_roof, 5), },50);
makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(POLYMER.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100); makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(POLYMER.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100);
makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack(STEEL.ingot(), 4), new OreDictStack(IRON.ingot(), 4), new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_red_copper, 8), },250); makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack(STEEL.ingot(), 4), new OreDictStack(IRON.ingot(), 4), new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_red_copper, 8), },250);
makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack(STEEL.ingot(), 4), new OreDictStack(POLYMER.ingot(), 2), new OreDictStack(DESH.ingot(), 1), new OreDictStack(STEEL.plate(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 8), new ComparableStack(ModItems.wire_gold, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack(STEEL.ingot(), 8), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.wire_red_copper, 32) },300);
makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150);
makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(Blocks.piston, 4), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(MINGRADE.ingot(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 6), },200); makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(Blocks.piston, 4), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(MINGRADE.ingot(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 6), },200);
makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250);

View File

@ -50,9 +50,9 @@ public class BreederRecipes {
recipes.put(new ComparableStack(ModItems.rod_neptunium), new BreederRecipe(ModItems.rod_pu238, 3)); recipes.put(new ComparableStack(ModItems.rod_neptunium), new BreederRecipe(ModItems.rod_pu238, 3));
recipes.put(new ComparableStack(ModItems.rod_dual_neptunium), new BreederRecipe(ModItems.rod_dual_pu238, 3)); recipes.put(new ComparableStack(ModItems.rod_dual_neptunium), new BreederRecipe(ModItems.rod_dual_pu238, 3));
recipes.put(new ComparableStack(ModItems.rod_quad_neptunium), new BreederRecipe(ModItems.rod_quad_pu238, 3)); recipes.put(new ComparableStack(ModItems.rod_quad_neptunium), new BreederRecipe(ModItems.rod_quad_pu238, 3));
recipes.put(new ComparableStack(ModItems.rod_pu238), new BreederRecipe(ModItems.rod_pu239, 2)); recipes.put(new ComparableStack(ModItems.rod_pu238), new BreederRecipe(ModItems.rod_pu239, 4));
recipes.put(new ComparableStack(ModItems.rod_dual_pu238), new BreederRecipe(ModItems.rod_dual_pu239, 2)); recipes.put(new ComparableStack(ModItems.rod_dual_pu238), new BreederRecipe(ModItems.rod_dual_pu239, 4));
recipes.put(new ComparableStack(ModItems.rod_quad_pu238), new BreederRecipe(ModItems.rod_quad_pu239, 2)); recipes.put(new ComparableStack(ModItems.rod_quad_pu238), new BreederRecipe(ModItems.rod_quad_pu239, 4));
recipes.put(new ComparableStack(ModItems.rod_pu239), new BreederRecipe(ModItems.rod_pu240, 2)); recipes.put(new ComparableStack(ModItems.rod_pu239), new BreederRecipe(ModItems.rod_pu240, 2));
recipes.put(new ComparableStack(ModItems.rod_dual_pu239), new BreederRecipe(ModItems.rod_dual_pu240, 2)); recipes.put(new ComparableStack(ModItems.rod_dual_pu239), new BreederRecipe(ModItems.rod_dual_pu240, 2));
recipes.put(new ComparableStack(ModItems.rod_quad_pu239), new BreederRecipe(ModItems.rod_quad_pu240, 2)); recipes.put(new ComparableStack(ModItems.rod_quad_pu239), new BreederRecipe(ModItems.rod_quad_pu240, 2));

View File

@ -21,7 +21,7 @@ public class GasCentrifugeRecipes {
MEUF6 (200, 100, "HEUF6", "Medium Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1)), MEUF6 (200, 100, "HEUF6", "Medium Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1)),
HEUF6 (300, 0, "NONE", "High Enriched UF6", true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)), HEUF6 (300, 0, "NONE", "High Enriched UF6", true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)),
PF6 (300, 0, "NONE", "Plutonium Hexafluoride", false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)); PF6 (300, 0, "NONE", "Plutonium Hexafluoride", true, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1));
int fluidConsumed; int fluidConsumed;
int fluidProduced; int fluidProduced;

View File

@ -5199,7 +5199,8 @@ public class ModItems {
cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe"); cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe");
ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 1000, 15.0F, 2.5F, 25).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 1000, 15.0F, 2.5F, 25).setRepairItem(new ItemStack(ModItems.ingot_cobalt));
cobalt_decorated_sword = new ItemSwordAbility(15F, 0, matDecCobalt).setUnlocalizedName("cobalt_decorated_sword").setTextureName(RefStrings.MODID + ":cobalt_decorated_sword"); cobalt_decorated_sword = new ItemSwordAbility(15F, 0, matDecCobalt)
.addHitAbility(new WeaponAbility.BobbleAbility()).setUnlocalizedName("cobalt_decorated_sword").setTextureName(RefStrings.MODID + ":cobalt_decorated_sword");
cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE) cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE)
.addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.RecursionAbility(4))
.addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(1))
@ -5221,7 +5222,8 @@ public class ModItems {
ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 1000, 20.0F, 2.5F, 30).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 1000, 20.0F, 2.5F, 30).setRepairItem(new ItemStack(ModItems.ingot_starmetal));
starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal) starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal)
.addHitAbility(new WeaponAbility.BeheaderAbility()) .addHitAbility(new WeaponAbility.BeheaderAbility())
.addHitAbility(new WeaponAbility.StunAbility(3)).setUnlocalizedName("starmetal_sword").setTextureName(RefStrings.MODID + ":starmetal_sword"); .addHitAbility(new WeaponAbility.StunAbility(3))
.addHitAbility(new WeaponAbility.BobbleAbility()).setUnlocalizedName("starmetal_sword").setTextureName(RefStrings.MODID + ":starmetal_sword");
starmetal_pickaxe = new ItemToolAbility(8F, 0, matStarmetal, EnumToolType.PICKAXE) starmetal_pickaxe = new ItemToolAbility(8F, 0, matStarmetal, EnumToolType.PICKAXE)
.addBreakAbility(new ToolAbility.RecursionAbility(6)) .addBreakAbility(new ToolAbility.RecursionAbility(6))
.addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(2))

View File

@ -186,23 +186,17 @@ public class HbmChestContents {
private static WeightedRandomChestContent[] missile = new WeightedRandomChestContent[] { private static WeightedRandomChestContent[] missile = new WeightedRandomChestContent[] {
new WeightedRandomChestContent(ModItems.missile_generic, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.missile_generic, 0, 1, 1, 4),
new WeightedRandomChestContent(ModItems.missile_incendiary, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.missile_incendiary, 0, 1, 1, 4),
new WeightedRandomChestContent(ModItems.missile_cluster, 0, 1, 1, 4),
new WeightedRandomChestContent(ModItems.missile_buster, 0, 1, 1, 4),
new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.launch_pad), 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.designator, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.designator, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.crate_caller, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.crate_caller, 0, 1, 1, 1),
new WeightedRandomChestContent(ModItems.thruster_small, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.thruster_small, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.thruster_medium, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.thruster_medium, 0, 1, 1, 4),
new WeightedRandomChestContent(ModItems.thruster_large, 0, 1, 1, 2),
new WeightedRandomChestContent(ModItems.fuel_tank_small, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.fuel_tank_small, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.fuel_tank_medium, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.fuel_tank_medium, 0, 1, 1, 4),
new WeightedRandomChestContent(ModItems.fuel_tank_small, 0, 1, 1, 2),
new WeightedRandomChestContent(ModItems.warhead_mirvlet, 0, 1, 1, 1),
new WeightedRandomChestContent(ModItems.warhead_nuclear, 0, 1, 1, 1),
new WeightedRandomChestContent(ModItems.bomb_caller, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.bomb_caller, 0, 1, 1, 1),
new WeightedRandomChestContent(ModItems.bomb_caller, 3, 1, 1, 1) }; new WeightedRandomChestContent(ModItems.bomb_caller, 3, 1, 1, 1),
new WeightedRandomChestContent(ModItems.bottle_nuka, 0, 1, 3, 10) };
private static WeightedRandomChestContent[] spaceship = new WeightedRandomChestContent[] { private static WeightedRandomChestContent[] spaceship = new WeightedRandomChestContent[] {
new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 5),

View File

@ -108,10 +108,10 @@ public class HbmWorldGen implements IWorldGenerator {
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cinnebarSpawn, 4, 8, 16, ModBlocks.ore_cinnebar); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cinnebarSpawn, 4, 8, 16, ModBlocks.ore_cinnebar);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cobaltSpawn, 4, 4, 8, ModBlocks.ore_cobalt); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cobaltSpawn, 4, 4, 8, ModBlocks.ore_cobalt);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ironClusterSpawn, 6, 5, 50, ModBlocks.cluster_iron); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ironClusterSpawn, 6, 15, 45, ModBlocks.cluster_iron);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 5, 30, ModBlocks.cluster_titanium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 15, 30, ModBlocks.cluster_titanium);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 5, 40, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 5, 20, ModBlocks.cluster_copper); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper);
if(GeneralConfig.enable528ColtanSpawn) { if(GeneralConfig.enable528ColtanSpawn) {
DungeonToolbox.generateOre(world, rand, i, j, GeneralConfig.coltanRate, 4, 15, 40, ModBlocks.ore_coltan); DungeonToolbox.generateOre(world, rand, i, j, GeneralConfig.coltanRate, 4, 15, 40, ModBlocks.ore_coltan);

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (4088)"; public static final String VERSION = "1.0.27 BETA (4095)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //V -> next release version

View File

@ -732,7 +732,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', POLYMER.ingot(), 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', POLYMER.ingot(), 'T', ModBlocks.machine_transformer });
addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, FluidType.ACID.ordinal()), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, FluidType.ACID.ordinal()), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer });
addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen });
addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"TCT", "HUH", "TCT", 'T', TC99.nugget(), 'C', ModItems.coil_copper, 'H', ModItems.coil_tungsten, 'U', ModItems.upgrade_template}); addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"TCT", "HUH", "TCT", 'T', ModItems.nugget_bismuth, 'C', ModItems.coil_copper, 'H', ModItems.coil_tungsten, 'U', ModItems.upgrade_template});
addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key });
addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm });

View File

@ -58,7 +58,7 @@ public class AnvilCraftPacket implements IMessage {
if(!recipe.isTierValid(anvil.tier)) //player is using the wrong type of anvil -> bad if(!recipe.isTierValid(anvil.tier)) //player is using the wrong type of anvil -> bad
return null; return null;
int count = m.mode == 1 ? 64 : 1; int count = m.mode == 1 ? (recipe.output.size() > 1 ? 64 : (recipe.output.get(0).stack.getMaxStackSize() / recipe.output.get(0).stack.stackSize)) : 1;
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {

View File

@ -62,10 +62,12 @@ public class ItemRenderLibrary {
renderers.put(Item.getItemFromBlock(ModBlocks.machine_gascent), new ItemRenderBase() { renderers.put(Item.getItemFromBlock(ModBlocks.machine_gascent), new ItemRenderBase() {
public void renderInventory() { public void renderInventory() {
GL11.glTranslated(0, -4, 0); GL11.glTranslated(0, -4, 0);
GL11.glScaled(4.5, 4.5, 4.5); GL11.glScaled(3.5, 3.5, 3.5);
} }
public void renderCommon() { public void renderCommon() {
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.gascent_tex); ResourceManager.gascent.renderPart("Centrifuge"); bindTexture(ResourceManager.gascent_tex); ResourceManager.gascent.renderPart("Centrifuge");
GL11.glShadeModel(GL11.GL_FLAT);
}}); }});
renderers.put(Item.getItemFromBlock(ModBlocks.iter), new ItemRenderBase() { renderers.put(Item.getItemFromBlock(ModBlocks.iter), new ItemRenderBase() {

View File

@ -30,10 +30,16 @@ public class RenderCentrifuge extends TileEntitySpecialRenderer {
} }
if(tileEntity instanceof TileEntityMachineGasCent) { if(tileEntity instanceof TileEntityMachineGasCent) {
GL11.glRotatef(180, 0F, 1F, 0F);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.gascent_tex); bindTexture(ResourceManager.gascent_tex);
ResourceManager.gascent.renderPart("Centrifuge"); ResourceManager.gascent.renderPart("Centrifuge");
ResourceManager.gascent.renderPart("Flag"); ResourceManager.gascent.renderPart("Flag");
GL11.glShadeModel(GL11.GL_FLAT);
} }
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View File

@ -217,8 +217,15 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
if(te instanceof IEnergyConductor) { if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te; IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) if(con.getPowerNet() != null) {
con.getPowerNet().subscribe(this); if(mode == 1 || mode == 2) {
if(con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().unsubscribe(this);
}
} else if(!con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().subscribe(this);
}
}
} }
} }
} }

View File

@ -160,7 +160,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
return false; return false;
//Or is the output slot already full? //Or is the output slot already full?
if(slots[2] != null && slots[2].stackSize >= slots[2].getMaxStackSize()) if(slots[2] != null && slots[2].stackSize + result.stackSize > slots[2].getMaxStackSize())
return false; return false;
return true; return true;

View File

@ -77,9 +77,16 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery {
if(te instanceof IEnergyConductor) { if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te; IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) if(con.getPowerNet() != null) {
con.getPowerNet().subscribe(this); if(mode == 1 || mode == 2) {
if(con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().unsubscribe(this);
}
} else if(!con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().subscribe(this);
}
}
} }
} }

View File

@ -63,28 +63,21 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
public String getName() { public String getName() {
return "container.gasCentrifuge"; return "container.gasCentrifuge";
} }
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return side == 0 ? slots_bottom : side == 1 ? slots_top : slots_side;
}
@Override @Override
public void readFromNBT(NBTTagCompound nbt) { public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt); super.readFromNBT(nbt);
NBTTagList list = nbt.getTagList("items", 10);
power = nbt.getLong("power"); power = nbt.getLong("power");
progress = nbt.getShort("progress"); progress = nbt.getShort("progress");
tank.readFromNBT(nbt, "tank"); tank.readFromNBT(nbt, "tank");
inputTank.readFromNBT(nbt, "inputTank"); inputTank.readFromNBT(nbt, "inputTank");
outputTank.readFromNBT(nbt, "outputTank"); outputTank.readFromNBT(nbt, "outputTank");
slots = new ItemStack[getSizeInventory()];
for(int i = 0; i < list.tagCount(); i++)
{
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
byte b0 = nbt1.getByte("slot");
if(b0 >= 0 && b0 < slots.length)
{
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
}
}
} }
@Override @Override
@ -95,26 +88,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
tank.writeToNBT(nbt, "tank"); tank.writeToNBT(nbt, "tank");
inputTank.writeToNBT(nbt, "inputTank"); inputTank.writeToNBT(nbt, "inputTank");
outputTank.writeToNBT(nbt, "outputTank"); outputTank.writeToNBT(nbt, "outputTank");
NBTTagList list = new NBTTagList();
for(int i = 0; i < slots.length; i++)
{
if(slots[i] != null)
{
NBTTagCompound nbt1 = new NBTTagCompound();
nbt1.setByte("slot", (byte)i);
slots[i].writeToNBT(nbt1);
list.appendTag(nbt1);
}
}
nbt.setTag("items", list);
} }
@Override
public int[] getAccessibleSlotsFromSide(int meta)
{
return meta == 0 ? slots_bottom : (meta == 1 ? slots_top : slots_side);
}
@Override @Override
public boolean canExtractItem(int i, ItemStack itemStack, int j) { public boolean canExtractItem(int i, ItemStack itemStack, int j) {
@ -398,15 +372,21 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
return list; return list;
} }
AxisAlignedBB bb = null;
@Override @Override
public AxisAlignedBB getRenderBoundingBox() { public AxisAlignedBB getRenderBoundingBox() {
return TileEntity.INFINITE_EXTENT_AABB;
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 5, zCoord + 1);
}
return bb;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() public double getMaxRenderDistanceSquared() {
{
return 65536.0D; return 65536.0D;
} }
@ -461,44 +441,44 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
type = PseudoFluidType.valueOf(nbt.getString(s + "_type")); type = PseudoFluidType.valueOf(nbt.getString(s + "_type"));
} }
/* ______ ______ /* ______ ______
* _I____I_ _I____I_ * _I____I_ _I____I_
* / \\\ / \\\ * / \\\ / \\\
* |IF{ || || } || | * |IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{|| || } || | * | IF{|| || } || |
* | || || || | * | || || || |
* | } || ||IF{ || | * | } || ||IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{|| | * | } || || IF{|| |
* |IF{ || || } || | * |IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{|| || } || | * | IF{|| || } || |
* | || || || | * | || || || |
* | } || ||IF{ || | * | } || ||IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{|| | * | } || || IF{|| |
* |IF{ || || } || | * |IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{ || || } || | * | IF{ || || } || |
* | IF{|| || } || | * | IF{|| || } || |
* | || || || | * | || || || |
* | } || ||IF{ || | * | } || ||IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{ || | * | } || || IF{ || |
* | } || || IF{|| | * | } || || IF{|| |
* _|_______||_||_______||_|_ * _|_______||_||_______||_|_
* | | * | |
* | | * | |
* | |==========| | * | |==========| |
* | |NESTED | | * | |NESTED | |

View File

@ -0,0 +1,32 @@
package com.hbm.util;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.util.EnumChatFormatting;
public class ItemStackUtil {
/**
* UNSAFE! Will ignore all existing tags and override them! In its current state, only fit for items we know don't have any display tags!
* Will, however, respect existing NBT tags
* @param stack
* @param lines
*/
public static void addTooltipToStack(ItemStack stack, String... lines) {
if(!stack.hasTagCompound())
stack.stackTagCompound = new NBTTagCompound();
NBTTagCompound display = new NBTTagCompound();
NBTTagList lore = new NBTTagList();
for(String line : lines) {
lore.appendTag(new NBTTagString(EnumChatFormatting.RESET + "" + EnumChatFormatting.GRAY + line));
}
display.setTag("Lore", lore);
stack.stackTagCompound.setTag("display", display);
}
}

View File

@ -3569,6 +3569,7 @@ tool.ability.silktouch=Behutsamkeit
tool.ability.smelter=Auto-Ofen tool.ability.smelter=Auto-Ofen
weapon.ability.beheader=Köpfer weapon.ability.beheader=Köpfer
weapon.ability.bobble=Glück des Sammlers
# Should rhyme with the translation for "chainsaw" # Should rhyme with the translation for "chainsaw"
weapon.ability.chainsaw=Skelettensäge weapon.ability.chainsaw=Skelettensäge
weapon.ability.fire=Flammend weapon.ability.fire=Flammend

View File

@ -3697,6 +3697,7 @@ tool.ability.silktouch=Silk Touch
tool.ability.smelter=Auto-Smelter tool.ability.smelter=Auto-Smelter
weapon.ability.beheader=Decapitator weapon.ability.beheader=Decapitator
weapon.ability.bobble=Luck of the Collector
# Should rhyme with the translation for "chainsaw" # Should rhyme with the translation for "chainsaw"
weapon.ability.chainsaw=Painsaw weapon.ability.chainsaw=Painsaw
weapon.ability.fire=Flaming weapon.ability.fire=Flaming

View File

@ -9,6 +9,10 @@ itemGroup.tabMissile=Ракеты и спутники NTM
itemGroup.tabWeapon=Оружие и турели NTM itemGroup.tabWeapon=Оружие и турели NTM
itemGroup.tabConsumable=Расходные материалы и снаряжение NTM itemGroup.tabConsumable=Расходные материалы и снаряжение NTM
achievement.acidizer.desc=уфф ай моя кожа
achievement.acidizer=Кислюка
achievement.assembly.desc=Подождика, уже час утра?
achievement.assembly=Завод расширяется
achievement.sacrifice=Жертва achievement.sacrifice=Жертва
achievement.sacrifice.desc=Встреться лицом к лицу с огнём и выживи. achievement.sacrifice.desc=Встреться лицом к лицу с огнём и выживи.
achievement.impossible=Буквально невозможно achievement.impossible=Буквально невозможно
@ -39,16 +43,6 @@ achievement.radPoison=Ура, Радиация!
achievement.radPoison.desc=Испытайте последствия радиационного отравления. achievement.radPoison.desc=Испытайте последствия радиационного отравления.
achievement.radDeath=Ой, Радиация! achievement.radDeath=Ой, Радиация!
achievement.radDeath.desc=Мария Кюри изобрела теорию радиоактивности, лечение радиоактивности и умирание от радиоактивности. achievement.radDeath.desc=Мария Кюри изобрела теорию радиоактивности, лечение радиоактивности и умирание от радиоактивности.
achievement.metalworks=Металлоконструкция
achievement.metalworks.desc=Бобмазон уровень 1 (Доменная печь)
achievement.assembly=Производство
achievement.assembly.desc=Бобмазон уровень 2 (Сборочный Станок)
achievement.chemistry=Химия
achievement.chemistry.desc=Бобмазон уровень 3 (Бетонные кирпичи)
achievement.oil=Нефть
achievement.oil.desc=Бобмазон уровень 4 (Электрический бойлер)
achievement.nuclear=Атомная Наука
achievement.nuclear.desc=Бобмазон уровень 5 (Урановое топливо)
achievement.hidden=Скрытый Каталог achievement.hidden=Скрытый Каталог
achievement.hidden.desc=Убейте зараженного крипера падающим товарным вагоном achievement.hidden.desc=Убейте зараженного крипера падающим товарным вагоном
achievement.horizonsStart=Апогей achievement.horizonsStart=Апогей
@ -101,6 +95,52 @@ achievement.psycheSuperego.desc="...Но заглянуть внутрь, что
achievement.psycheSuperego=Суперэго achievement.psycheSuperego=Суперэго
achievement.warpDrive.desc="Мне нравится мечтать, да" achievement.warpDrive.desc="Мне нравится мечтать, да"
achievement.warpDrive=Полёт на ковре-самолёте achievement.warpDrive=Полёт на ковре-самолёте
achievement.breeding.desc=Благодарю вас, да благословит вас Бог, и да благословит бог Соединенные Штаты Америки.
achievement.breeding=Иронично
achievement.bismuth.desc=Помните как люди спорили об этом месяц? Я помню.
achievement.bismuth=Висмут
achievement.blastFurnace.desc=Они разобрали затонувший дредноут для "Эксплорера-1".
achievement.blastFurnace=Железо и уголь
achievement.burnerPress.desc=Давление давит и на меня, и на тебя
achievement.burnerPress=Под давлением
achievement.centrifuge.desc=центробежная сила это фейк не @ меня
achievement.centrifuge=Центростремительная сила
achievement.chemplant.desc=Теперь ты думаешь химикатами!
achievement.chemplant=Завод расширяется: Часть 2
achievement.chicagoPile.desc="Как там местные жители?" / "Очень дружелюбные".
achievement.chicagoPile=Мореплаватель высадился в Новом Свете
achievement.concrete.desc=Любимчик Большевиков.
achievement.concrete=Старый проверенный
achievement.desh.desc="Тогда давайте, вы все. Места, куда можно пойти!"
achievement.desh=Леверье
achievement.fusion.desc=Танец дейтронов, тритонов и энергии.
achievement.fusion=Синтез
achievement.gasCent.desc=Необогащенный уран ненавидит его!
achievement.gasCent=Стиль Молнии
achievement.manhattan.desc=8:15; 6 августа, 1945 год
achievement.manhattan=Проект Манхэттен
achievement.polymer.desc=Восхитительный, восхитительный микропластик.
achievement.polymer=Тефлон
achievement.RBMKBoom.desc=Какова цена лжи?
achievement.RBMKBoom=15,000.
achievement.RBMK.desc=Он бредит, отведите его в лазарет.
achievement.RBMK=3.6 Рентген?
achievement.redBalloons.desc="Это то, чего мы ждали. Вот она, ребята, война."
achievement.redBalloons=99 воздушных шариков
achievement.schrab.desc=Как бы то ни было, я бы не стал смотреть на это слишком долго.
achievement.schrab=Остров стабильности
achievement.SILEX.desc=Это круче, чем кажется, я обещаю.
achievement.SILEX=Лазерное разделение изотопов
achievement.tantalum.desc=Неуловимый, но всегда необходимый элемент.
achievement.tantalum="Тантал"
achievement.technetium.desc=Это целебно, это целебно!
achievement.technetium=Большой Человек, Человек-Свинья
achievement.watzBoom.desc=В следующий раз осушите свой септик.
achievement.watzBoom=Отвратительно
achievement.watz.desc=Поля Фолквангра также присутствуют
achievement.watz=Сила Е-126
achievement.ZIRNOXBoom.desc=cope, seethe, mald
achievement.ZIRNOXBoom=ЦИРНОКС
potion.hbm_taint=Порча potion.hbm_taint=Порча
potion.hbm_mutation=Заражённое порчей сердце potion.hbm_mutation=Заражённое порчей сердце
@ -746,6 +786,7 @@ geiger.envRad=Общее радиационное заражение среды:
geiger.playerRad=Уровень радиоактивного заражения игрока: geiger.playerRad=Уровень радиоактивного заражения игрока:
geiger.playerRes=Радиационная защита игрока: geiger.playerRes=Радиационная защита игрока:
geiger.title=СЧЁТЧИК ГЕЙГЕРА geiger.title=СЧЁТЧИК ГЕЙГЕРА
geiger.title.dosimeter=ДОЗИМЕТР
hadron.analysis=Анализ... hadron.analysis=Анализ...
hadron.buttonOn=Камера анализа (если есть) включена hadron.buttonOn=Камера анализа (если есть) включена
@ -1682,6 +1723,9 @@ item.ingot_fiberglass.name=Стекловолокно
item.ingot_asbestos.name=Асбестовый лист item.ingot_asbestos.name=Асбестовый лист
item.solid_fuel.name=Твердое топливо item.solid_fuel.name=Твердое топливо
item.solid_fuel_presto.name=Топливные полена
item.solid_fuel_presto_triplet.name=Сжатые топливные полена
item.stick_dynamite.name=Динамитная шашка
item.rocket_fuel.name=Твердое топливо (Ракетное) item.rocket_fuel.name=Твердое топливо (Ракетное)
item.coke.name=Коксовый уголь item.coke.name=Коксовый уголь
item.lignite.name=Бурый уголь item.lignite.name=Бурый уголь
@ -2343,6 +2387,7 @@ item.upgrade_centrifuge.name=Улучшение "Центрифуга"
item.upgrade_crystallizer.name=Улучшение "Кристаллизатор" item.upgrade_crystallizer.name=Улучшение "Кристаллизатор"
item.upgrade_nullifier.name=Улучшение "Уничтожитель мусора" item.upgrade_nullifier.name=Улучшение "Уничтожитель мусора"
item.upgrade_screm.name=Улучшение "Кричащий учёный" item.upgrade_screm.name=Улучшение "Кричащий учёный"
item.upgrade_gc_speed.name=Улучшение "Разгон газовой центрифуги"
item.fusion_core.name=Ядерный блок item.fusion_core.name=Ядерный блок
item.energy_core.name=Импровизированный энергоблок item.energy_core.name=Импровизированный энергоблок
@ -3158,6 +3203,7 @@ item.ammo_fireext_sand.name=Бак с песком для огнетушител
item.cordite.name=Кордит item.cordite.name=Кордит
item.ballistite.name=Баллистит item.ballistite.name=Баллистит
item.ball_dynamite.name=Динамит
item.plate_kevlar.name=Кевларо-керамический состав item.plate_kevlar.name=Кевларо-керамический состав
item.weaponized_starblaster_cell.name=§cСмонтированная энергетическая ячейка Звездного бластера§r item.weaponized_starblaster_cell.name=§cСмонтированная энергетическая ячейка Звездного бластера§r
@ -4132,6 +4178,7 @@ item.oil_detector.bullseye=Нефтяной резервуар прямо сни
item.oil_detector.detected=Поблизости обнаружен резервуар нефти. item.oil_detector.detected=Поблизости обнаружен резервуар нефти.
item.oil_detector.noOil=Нефти не обнаружено. item.oil_detector.noOil=Нефти не обнаружено.
item.geiger_counter.name=Ручной счетчик Гейгера item.geiger_counter.name=Ручной счетчик Гейгера
item.dosimeter.name=Дозиметр
item.digamma_diagnostic.name=Диагностика дигаммы item.digamma_diagnostic.name=Диагностика дигаммы
tile.geiger.name=Счетчик Гейгера tile.geiger.name=Счетчик Гейгера
tile.glass_polonium.name=Полониевое стекло tile.glass_polonium.name=Полониевое стекло

View File

@ -250,40 +250,40 @@ v -0.056348 0.632910 -0.687500
v -0.079687 0.576563 -0.687500 v -0.079687 0.576563 -0.687500
v -0.056348 0.520215 -0.687500 v -0.056348 0.520215 -0.687500
v 0.000000 0.656250 -0.937500 v 0.000000 0.656250 -0.937500
vt 0.125000 0.125000 vt 0.875000 0.125000
vt 0.000000 0.187500 vt 1.000000 0.187500
vt 0.000000 0.125000 vt 1.000000 0.125000
vt 0.812500 0.187500 vt 0.187500 0.187500
vt 0.687500 0.125000 vt 0.312500 0.125000
vt 0.812500 0.125000
vt 0.687500 0.187500
vt 0.562500 0.125000
vt 0.125000 0.187500
vt 0.187500 0.125000 vt 0.187500 0.125000
vt 0.187500 0.250000 vt 0.312500 0.187500
vt 0.562500 0.250000 vt 0.437500 0.125000
vt 0.250000 0.312500 vt 0.875000 0.187500
vt 0.812500 0.125000
vt 0.812500 0.250000
vt 0.437500 0.250000
vt 0.750000 0.312500
vt 0.500000 0.437500 vt 0.500000 0.437500
vt 0.500000 0.312500 vt 0.500000 0.312500
vt 0.250000 0.500000 vt 0.750000 0.500000
vt 0.625000 0.562500 vt 0.375000 0.562500
vt 0.187500 0.562500 vt 0.812500 0.562500
vt 0.000000 0.562500 vt 1.000000 0.562500
vt 0.000000 0.812500
vt 1.000000 0.812500 vt 1.000000 0.812500
vt 1.000000 0.687500 vt 0.000000 0.812500
vt 0.125000 0.812500 vt 0.000000 0.687500
vt -0.000000 0.625000 vt 0.875000 0.812500
vt 0.125000 0.625000 vt 1.000000 0.625000
vt 0.875000 0.625000
vt 0.312500 0.625000 vt 0.312500 0.625000
vt 0.500000 0.687500 vt 0.500000 0.562500
vt 0.312500 0.687500
vt 0.312500 0.562500 vt 0.312500 0.562500
vt 0.312500 0.687500
vt 0.500000 0.625000 vt 0.500000 0.625000
vt 0.750000 0.625000 vt 0.750000 0.625000
vt 0.500000 0.562500 vt 0.500000 0.687500
vt 0.750000 0.562500 vt 0.750000 0.687500
vt 0.000000 0.812500 vt 1.000000 0.812500
vn -1.0000 0.0000 0.0000 vn -1.0000 0.0000 0.0000
vn -0.7071 0.0000 -0.7071 vn -0.7071 0.0000 -0.7071
vn -0.7071 0.0000 0.7071 vn -0.7071 0.0000 0.7071

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -3,7 +3,7 @@
"modid": "hbm", "modid": "hbm",
"name": "Hbm's Nuclear Tech", "name": "Hbm's Nuclear Tech",
"description": "A mod that adds weapons, nuclear themed stuff and machines", "description": "A mod that adds weapons, nuclear themed stuff and machines",
"version":"1.0.27_X4088", "version":"1.0.27_X4095",
"mcversion": "1.7.10", "mcversion": "1.7.10",
"url": "", "url": "",
"updateUrl": "", "updateUrl": "",