mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
yeag
This commit is contained in:
parent
1f5fc1926c
commit
5bcfd368fc
@ -11,6 +11,7 @@
|
||||
* In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints
|
||||
|
||||
## Changed
|
||||
* Updated chinese localization
|
||||
* Changed the way 528 mode works
|
||||
* May of the old tantalium requirements no longer exist since the assembler rework
|
||||
* Some important recipes have been moved to the precision assembler
|
||||
@ -52,9 +53,13 @@
|
||||
* Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass
|
||||
* Finally removed the long deprecated ambience radiation generator and geothermal generator
|
||||
* Nerfed the ballistic jackets, as they are comically cheap and made some zombies impossible to kill in early game
|
||||
* RBMK fuel rod items can now be inserted directly into fuel rods via right click, instead of having to open the GUI
|
||||
* Containment boxes now use ferrouranium instead of raw U-238
|
||||
* Added missing recipes to two legendary weapons
|
||||
|
||||
## Fixed
|
||||
* Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled
|
||||
* Fixed panzerschreck equip animation not speeding up with the sawed off mod
|
||||
* Fixed FENSU not keeping its charge when broken
|
||||
* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers
|
||||
* Added more null checks to world generation, hopefully preventing weird one-off crashes
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5526
|
||||
mod_build_number=5544
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
package com.hbm.blocks.machine.rbmk;
|
||||
|
||||
import com.hbm.handler.BossSpawnHandler;
|
||||
import com.hbm.items.machine.ItemRBMKLid;
|
||||
import com.hbm.items.machine.ItemRBMKRod;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityProxyInventory;
|
||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
@ -32,7 +36,34 @@ public class RBMKRod extends RBMKBase {
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
BossSpawnHandler.markFBI(player);
|
||||
return openInv(world, x, y, z, player);
|
||||
|
||||
if(world.isRemote) return true;
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return false;
|
||||
|
||||
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if(!(te instanceof TileEntityRBMKRod)) return false;
|
||||
TileEntityRBMKRod rbmk = (TileEntityRBMKRod) te;
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) {
|
||||
if(!rbmk.hasLid()) return false;
|
||||
}
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKRod && rbmk.slots[0] == null) {
|
||||
rbmk.slots[0] = player.getHeldItem().copy();
|
||||
rbmk.slots[0].stackSize = 1;
|
||||
player.getHeldItem().stackSize--;
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!player.isSneaking()) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -14,10 +14,7 @@ public class WeaponTab extends CreativeTabs {
|
||||
|
||||
@Override
|
||||
public Item getTabIconItem() {
|
||||
|
||||
if(ModItems.gun_maresleg != null) {
|
||||
return ModItems.gun_maresleg;
|
||||
}
|
||||
if(ModItems.gun_greasegun != null) return ModItems.gun_greasegun;
|
||||
return Items.iron_pickaxe;
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,10 +39,10 @@ public class FluidTank implements Cloneable {
|
||||
loadingHandlers.add(new FluidLoaderInfinite());
|
||||
}
|
||||
|
||||
FluidType type;
|
||||
int fluid;
|
||||
int maxFluid;
|
||||
int pressure = 0;
|
||||
protected FluidType type;
|
||||
protected int fluid;
|
||||
protected int maxFluid;
|
||||
protected int pressure = 0;
|
||||
|
||||
public FluidTank(FluidType type, int maxFluid) {
|
||||
this.type = type;
|
||||
|
||||
@ -56,6 +56,16 @@ public class PedestalRecipes extends SerializableRecipe {
|
||||
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)));
|
||||
|
||||
register(new PedestalRecipe(new ItemStack(ModItems.gun_amat_subtlety),
|
||||
new OreDictStack(STAR.ingot()), new OreDictStack(AL.plateCast()), new OreDictStack(STAR.ingot()),
|
||||
new OreDictStack(AL.plateCast()), new ComparableStack(ModItems.gun_amat), new OreDictStack(AL.plateCast()),
|
||||
new OreDictStack(STAR.ingot()), new OreDictStack(AL.plateCast()), new OreDictStack(STAR.ingot())));
|
||||
|
||||
register(new PedestalRecipe(new ItemStack(ModItems.gun_amat_penance),
|
||||
new OreDictStack(STAR.ingot()), new OreDictStack(DURA.plateCast()), new OreDictStack(STAR.ingot()),
|
||||
new ComparableStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER), new ComparableStack(ModItems.gun_amat), new ComparableStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_BLACK),
|
||||
new OreDictStack(STAR.ingot()), new OreDictStack(DURA.plateCast()), new OreDictStack(STAR.ingot())));
|
||||
|
||||
register(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()),
|
||||
|
||||
@ -305,8 +305,11 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
|
||||
if(world.getBlock(x, g - 1, z).canPlaceTorchOnTop(world, x, g - 1, z)) {
|
||||
world.setBlock(x, g, z, ModBlocks.mine_ap);
|
||||
TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, g, z);
|
||||
landmine.waitingForPlayer = true;
|
||||
TileEntity tile = world.getTileEntity(x, g, z);
|
||||
if(tile instanceof TileEntityLandmine) {
|
||||
TileEntityLandmine landmine = (TileEntityLandmine) tile;
|
||||
landmine.waitingForPlayer = true;
|
||||
}
|
||||
if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned landmine at " + x + " " + g + " " + z);
|
||||
break;
|
||||
}
|
||||
@ -323,8 +326,11 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
world.setBlock(x, y, z, ModBlocks.lantern_behemoth, 12, 3);
|
||||
MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 0, 0, 0, 0}, ModBlocks.lantern_behemoth, ForgeDirection.NORTH);
|
||||
|
||||
TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) world.getTileEntity(x, y, z);
|
||||
lantern.isBroken = true;
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
if(tile instanceof TileEntityLanternBehemoth) {
|
||||
TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) tile;
|
||||
lantern.isBroken = true;
|
||||
}
|
||||
|
||||
if(rand.nextInt(2) == 0) {
|
||||
LootGenerator.setBlock(world, x, y, z - 2);
|
||||
@ -342,8 +348,11 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
int y = world.getHeightValue(x, z);
|
||||
if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) {
|
||||
world.setBlock(x, y, z, ModBlocks.mine_he);
|
||||
TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, y, z);
|
||||
landmine.waitingForPlayer = true;
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
if(tile instanceof TileEntityLandmine) {
|
||||
TileEntityLandmine landmine = (TileEntityLandmine) tile;
|
||||
landmine.waitingForPlayer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,10 +382,10 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
if(world.getBlock(x, y + 1, z).canPlaceTorchOnTop(world, x, y + 1, z)) {
|
||||
|
||||
world.setBlock(x, y, z, ModBlocks.soyuz_capsule, 3, 2);
|
||||
|
||||
TileEntitySoyuzCapsule cap = (TileEntitySoyuzCapsule)world.getTileEntity(x, y, z);
|
||||
|
||||
if(cap != null) {
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntitySoyuzCapsule) {
|
||||
TileEntitySoyuzCapsule cap = (TileEntitySoyuzCapsule) tile;
|
||||
cap.setInventorySlotContents(rand.nextInt(cap.getSizeInventory()), new ItemStack(ModItems.record_glass));
|
||||
}
|
||||
|
||||
@ -420,33 +429,36 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
|
||||
if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) {
|
||||
world.setBlock(x, y, z, ModBlocks.safe, rand.nextInt(4) + 2, 2);
|
||||
TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x, y, z);
|
||||
|
||||
switch(rand.nextInt(10)) {
|
||||
case 0: case 1: case 2: case 3:
|
||||
safe.setMod(1);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_RUSTY), safe, rand.nextInt(4) + 3);
|
||||
break;
|
||||
case 4: case 5: case 6:
|
||||
safe.setMod(0.1);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_STANDARD), safe, rand.nextInt(3) + 2);
|
||||
break;
|
||||
case 7: case 8:
|
||||
safe.setMod(0.02);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_REINFORCED), safe, rand.nextInt(3) + 1);
|
||||
break;
|
||||
case 9:
|
||||
safe.setMod(0.0);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_UNBREAKABLE), safe, rand.nextInt(2) + 1);
|
||||
break;
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
if(tile instanceof TileEntitySafe) {
|
||||
TileEntitySafe safe = (TileEntitySafe) tile;
|
||||
|
||||
switch(rand.nextInt(10)) {
|
||||
case 0: case 1: case 2: case 3:
|
||||
safe.setMod(1);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_RUSTY), safe, rand.nextInt(4) + 3);
|
||||
break;
|
||||
case 4: case 5: case 6:
|
||||
safe.setMod(0.1);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_STANDARD), safe, rand.nextInt(3) + 2);
|
||||
break;
|
||||
case 7: case 8:
|
||||
safe.setMod(0.02);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_REINFORCED), safe, rand.nextInt(3) + 1);
|
||||
break;
|
||||
case 9:
|
||||
safe.setMod(0.0);
|
||||
WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_UNBREAKABLE), safe, rand.nextInt(2) + 1);
|
||||
break;
|
||||
}
|
||||
|
||||
safe.setPins(rand.nextInt(999) + 1);
|
||||
safe.lock();
|
||||
|
||||
if(rand.nextInt(10) < 3) safe.fillWithSpiders(); // 30% chance; those safes have been sitting there for ages, they gotta have some spiders in them
|
||||
}
|
||||
|
||||
safe.setPins(rand.nextInt(999) + 1);
|
||||
safe.lock();
|
||||
|
||||
if(rand.nextInt(10) < 3) // 30% chance; those safes have been sitting there for ages, they gotta have some spiders in them
|
||||
safe.fillWithSpiders();
|
||||
|
||||
if(GeneralConfig.enableDebugMode)
|
||||
MainRegistry.logger.info("[Debug] Successfully spawned safe at " + x + " " + (y + 1) +" " + z);
|
||||
}
|
||||
|
||||
@ -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 (5526)";
|
||||
public static final String VERSION = "1.0.27 BETA (5544)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -665,7 +665,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "BBB", "BBB", "TTT", 'B', STEEL.bolt(), 'T', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'H', STEEL.shell(), 'W', ModItems.coil_copper });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel });
|
||||
addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', FERRO.ingot(), 'C', ModBlocks.crate_steel });
|
||||
addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', Items.leather, 'G', GUNMETAL.plate() });
|
||||
addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', ANY_RUBBER.ingot(), 'G', GUNMETAL.plate() });
|
||||
addRecipeAuto(new ItemStack(ModItems.ammo_bag, 1), new Object[] { "LLL", "MGM", "LLL", 'L', Items.leather, 'G', WEAPONSTEEL.plate(), 'M', WEAPONSTEEL.mechanism() });
|
||||
|
||||
@ -148,6 +148,7 @@ public class AnnihilatorSavedData extends WorldSavedData {
|
||||
serializeKey(compound, entry.getKey());
|
||||
compound.setByteArray("amount", entry.getValue().toByteArray());
|
||||
nbt.appendTag(compound);
|
||||
System.out.println("Serializing " + entry.getValue().toString() + " of " + entry.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,6 +158,7 @@ public class AnnihilatorSavedData extends WorldSavedData {
|
||||
NBTTagCompound compound = (NBTTagCompound) nbt.tagList.get(i);
|
||||
Object key = deserializeKey(compound);
|
||||
if(key != null) this.items.put(key, new BigInteger(compound.getByteArray("amount")));
|
||||
System.out.println("Deserializing " + new BigInteger(compound.getByteArray("amount")).toString() + " of " + key);
|
||||
}
|
||||
} catch(Throwable ex) { } // because world data can be dented to all fucking hell and back
|
||||
}
|
||||
@ -180,7 +182,7 @@ public class AnnihilatorSavedData extends WorldSavedData {
|
||||
if(key instanceof FluidType) { // 2
|
||||
FluidType type = (FluidType) key;
|
||||
nbt.setByte("key", (byte) 2);
|
||||
nbt.setString("fluid", type.getUnlocalizedName());
|
||||
nbt.setString("fluid", type.getName());
|
||||
}
|
||||
|
||||
if(key instanceof String) { // 3
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user