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;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.hbm.blocks.ITooltipProvider;
@ -28,6 +30,8 @@ import net.minecraft.world.World;
public class NTMAnvil extends BlockFalling implements ITooltipProvider {
public final int tier;
public static final HashMap<Integer, List<NTMAnvil>> tierMap = new HashMap();
@SideOnly(Side.CLIENT)
private IIcon iconTop;
@ -38,6 +42,27 @@ public class NTMAnvil extends BlockFalling implements ITooltipProvider {
this.setHardness(5.0F);
this.setResistance(100.0F);
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

View File

@ -1,5 +1,7 @@
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.tool.IItemAbility;
import com.hbm.packet.AuxParticlePacketNT;
@ -20,6 +22,7 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityMagmaCube;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.entity.monster.EntityZombie;
@ -316,4 +319,35 @@ public abstract class WeaponAbility {
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 java.util.Arrays;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.LinkedList;
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.AnvilConstructionRecipe;
import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput;
import com.hbm.inventory.recipes.anvil.AnvilRecipes.OverlayType;
import com.hbm.lib.RefStrings;
import com.hbm.util.ItemStackUtil;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.NEIServerUtils;
import codechicken.nei.PositionedStack;
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.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class AnvilRecipeHandler extends TemplateRecipeHandler {
@ -31,22 +33,87 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
public class RecipeSet extends TemplateRecipeHandler.CachedRecipe {
PositionedStack output;
List<PositionedStack> input = new ArrayList();
List<PositionedStack> output = new ArrayList();
PositionedStack anvil;
int tier;
OverlayType shape;
public RecipeSet(ItemStack output, int tier) {
this.output = new PositionedStack(output, 111, 24);
public RecipeSet(List<Object> in, List<Object> out, int tier) {
//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;
}
@Override
public List<PositionedStack> getIngredients() {
return getCycledIngredients(cycleticks / 48, Arrays.asList(output));
return getCycledIngredients(cycleticks / 48, input);
}
@Override
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();
for(AnvilConstructionRecipe recipe : recipes) {
this.arecipes.add(new RecipeSet(recipe.output.get(0).stack.copy(), recipe.tierLower));
this.addRecipeToList(recipe);
}
} else {
super.loadCraftingRecipes(outputId, results);
@ -78,7 +145,8 @@ public class AnvilRecipeHandler extends TemplateRecipeHandler {
for(AnvilOutput out : recipe.output) {
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
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
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++)
for(int j = 0; j < 3; j++)
fontRenderer.drawString("Tier " + rec.tier + " anvil", 51 + i, 50 + j, 0x000000);
fontRenderer.drawString("Tier " + rec.tier + " anvil", 52, 51, 0xffffff);
}
//hey asshole, stop nulling my fucking lists
transferRectsGui = new LinkedList<RecipeTransferRect>();
guiGui = new LinkedList<Class<? extends GuiContainer>>();
@Override
public int recipiesPerPage() {
return 1;
transferRectsGui.add(new RecipeTransferRect(new Rectangle(11, 42, 36, 18), "ntmAnvil"));
transferRectsGui.add(new RecipeTransferRect(new Rectangle(65, 42, 36, 18), "ntmAnvil"));
guiGui.add(GUIAnvil.class);
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
}
@Override
public String getGuiTexture() {
return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png";
}
@Override
public void drawBackground(int recipeIndex) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GuiDraw.changeTexture(getGuiTexture());
drawTexturedModalRect(0, 0, 5, 11, 166, 120);
public void drawBackground(int recipe) {
super.drawBackground(recipe);
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(Blocks.tnt, 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("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_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_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_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);

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_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_pu238), new BreederRecipe(ModItems.rod_pu239, 2));
recipes.put(new ComparableStack(ModItems.rod_dual_pu238), new BreederRecipe(ModItems.rod_dual_pu239, 2));
recipes.put(new ComparableStack(ModItems.rod_quad_pu238), new BreederRecipe(ModItems.rod_quad_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, 4));
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_dual_pu239), new BreederRecipe(ModItems.rod_dual_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)),
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 fluidProduced;

View File

@ -5199,7 +5199,8 @@ public class ModItems {
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));
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)
.addBreakAbility(new ToolAbility.RecursionAbility(4))
.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));
starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal)
.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)
.addBreakAbility(new ToolAbility.RecursionAbility(6))
.addBreakAbility(new ToolAbility.HammerAbility(2))

View File

@ -186,23 +186,17 @@ public class HbmChestContents {
private static WeightedRandomChestContent[] missile = new WeightedRandomChestContent[] {
new WeightedRandomChestContent(ModItems.missile_generic, 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.battery_advanced, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.designator, 0, 1, 1, 5),
new WeightedRandomChestContent(ModItems.crate_caller, 0, 1, 1, 1),
new WeightedRandomChestContent(ModItems.thruster_small, 0, 1, 1, 5),
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_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, 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[] {
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.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.titaniumClusterSpawn, 6, 5, 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.copperClusterSpawn, 6, 5, 20, ModBlocks.cluster_copper);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ironClusterSpawn, 6, 15, 45, ModBlocks.cluster_iron);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 15, 30, ModBlocks.cluster_titanium);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium);
DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper);
if(GeneralConfig.enable528ColtanSpawn) {
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 static final String MODID = "hbm";
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:
//V T (X)
//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_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_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.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
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++) {

View File

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

View File

@ -30,10 +30,16 @@ public class RenderCentrifuge extends TileEntitySpecialRenderer {
}
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);
ResourceManager.gascent.renderPart("Centrifuge");
ResourceManager.gascent.renderPart("Flag");
GL11.glShadeModel(GL11.GL_FLAT);
}
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}

View File

@ -217,8 +217,15 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this))
con.getPowerNet().subscribe(this);
if(con.getPowerNet() != null) {
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;
//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 true;

View File

@ -77,9 +77,16 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery {
if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this))
con.getPowerNet().subscribe(this);
if(con.getPowerNet() != null) {
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() {
return "container.gasCentrifuge";
}
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return side == 0 ? slots_bottom : side == 1 ? slots_top : slots_side;
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
NBTTagList list = nbt.getTagList("items", 10);
power = nbt.getLong("power");
progress = nbt.getShort("progress");
tank.readFromNBT(nbt, "tank");
inputTank.readFromNBT(nbt, "inputTank");
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
@ -95,26 +88,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
tank.writeToNBT(nbt, "tank");
inputTank.writeToNBT(nbt, "inputTank");
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
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
@ -398,15 +372,21 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
return list;
}
AxisAlignedBB bb = null;
@Override
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
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared()
{
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@ -461,44 +441,44 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
type = PseudoFluidType.valueOf(nbt.getString(s + "_type"));
}
/* ______ ______
* _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{|| |
* _|_______||_||_______||_|_
* | |
/* ______ ______
* _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{|| |
* _|_______||_||_______||_|_
* | |
* | |
* | |==========| |
* | |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
weapon.ability.beheader=Köpfer
weapon.ability.bobble=Glück des Sammlers
# Should rhyme with the translation for "chainsaw"
weapon.ability.chainsaw=Skelettensäge
weapon.ability.fire=Flammend

View File

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

View File

@ -9,6 +9,10 @@ itemGroup.tabMissile=Ракеты и спутники NTM
itemGroup.tabWeapon=Оружие и турели NTM
itemGroup.tabConsumable=Расходные материалы и снаряжение NTM
achievement.acidizer.desc=уфф ай моя кожа
achievement.acidizer=Кислюка
achievement.assembly.desc=Подождика, уже час утра?
achievement.assembly=Завод расширяется
achievement.sacrifice=Жертва
achievement.sacrifice.desc=Встреться лицом к лицу с огнём и выживи.
achievement.impossible=Буквально невозможно
@ -39,16 +43,6 @@ achievement.radPoison=Ура, Радиация!
achievement.radPoison.desc=Испытайте последствия радиационного отравления.
achievement.radDeath=Ой, Радиация!
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.desc=Убейте зараженного крипера падающим товарным вагоном
achievement.horizonsStart=Апогей
@ -101,6 +95,52 @@ achievement.psycheSuperego.desc="...Но заглянуть внутрь, что
achievement.psycheSuperego=Суперэго
achievement.warpDrive.desc="Мне нравится мечтать, да"
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_mutation=Заражённое порчей сердце
@ -746,6 +786,7 @@ geiger.envRad=Общее радиационное заражение среды:
geiger.playerRad=Уровень радиоактивного заражения игрока:
geiger.playerRes=Радиационная защита игрока:
geiger.title=СЧЁТЧИК ГЕЙГЕРА
geiger.title.dosimeter=ДОЗИМЕТР
hadron.analysis=Анализ...
hadron.buttonOn=Камера анализа (если есть) включена
@ -1682,6 +1723,9 @@ item.ingot_fiberglass.name=Стекловолокно
item.ingot_asbestos.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.coke.name=Коксовый уголь
item.lignite.name=Бурый уголь
@ -2343,6 +2387,7 @@ item.upgrade_centrifuge.name=Улучшение "Центрифуга"
item.upgrade_crystallizer.name=Улучшение "Кристаллизатор"
item.upgrade_nullifier.name=Улучшение "Уничтожитель мусора"
item.upgrade_screm.name=Улучшение "Кричащий учёный"
item.upgrade_gc_speed.name=Улучшение "Разгон газовой центрифуги"
item.fusion_core.name=Ядерный блок
item.energy_core.name=Импровизированный энергоблок
@ -3158,6 +3203,7 @@ item.ammo_fireext_sand.name=Бак с песком для огнетушител
item.cordite.name=Кордит
item.ballistite.name=Баллистит
item.ball_dynamite.name=Динамит
item.plate_kevlar.name=Кевларо-керамический состав
item.weaponized_starblaster_cell.name=§cСмонтированная энергетическая ячейка Звездного бластера§r
@ -4132,6 +4178,7 @@ item.oil_detector.bullseye=Нефтяной резервуар прямо сни
item.oil_detector.detected=Поблизости обнаружен резервуар нефти.
item.oil_detector.noOil=Нефти не обнаружено.
item.geiger_counter.name=Ручной счетчик Гейгера
item.dosimeter.name=Дозиметр
item.digamma_diagnostic.name=Диагностика дигаммы
tile.geiger.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.056348 0.520215 -0.687500
v 0.000000 0.656250 -0.937500
vt 0.125000 0.125000
vt 0.000000 0.187500
vt 0.000000 0.125000
vt 0.812500 0.187500
vt 0.687500 0.125000
vt 0.812500 0.125000
vt 0.687500 0.187500
vt 0.562500 0.125000
vt 0.125000 0.187500
vt 0.875000 0.125000
vt 1.000000 0.187500
vt 1.000000 0.125000
vt 0.187500 0.187500
vt 0.312500 0.125000
vt 0.187500 0.125000
vt 0.187500 0.250000
vt 0.562500 0.250000
vt 0.250000 0.312500
vt 0.312500 0.187500
vt 0.437500 0.125000
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.312500
vt 0.250000 0.500000
vt 0.625000 0.562500
vt 0.187500 0.562500
vt 0.000000 0.562500
vt 0.000000 0.812500
vt 0.750000 0.500000
vt 0.375000 0.562500
vt 0.812500 0.562500
vt 1.000000 0.562500
vt 1.000000 0.812500
vt 1.000000 0.687500
vt 0.125000 0.812500
vt -0.000000 0.625000
vt 0.125000 0.625000
vt 0.000000 0.812500
vt 0.000000 0.687500
vt 0.875000 0.812500
vt 1.000000 0.625000
vt 0.875000 0.625000
vt 0.312500 0.625000
vt 0.500000 0.687500
vt 0.312500 0.687500
vt 0.500000 0.562500
vt 0.312500 0.562500
vt 0.312500 0.687500
vt 0.500000 0.625000
vt 0.750000 0.625000
vt 0.500000 0.562500
vt 0.750000 0.562500
vt 0.000000 0.812500
vt 0.500000 0.687500
vt 0.750000 0.687500
vt 1.000000 0.812500
vn -1.0000 0.0000 0.0000
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",
"name": "Hbm's Nuclear Tech",
"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",
"url": "",
"updateUrl": "",