Merge branch 'HbmMods:master' into rulang121
20
changelog
@ -11,7 +11,9 @@
|
|||||||
* Filters can be set using items or RoR commands
|
* Filters can be set using items or RoR commands
|
||||||
* Requests can be configured to take as much as possible, to only take full stacks, or to only take full requests
|
* Requests can be configured to take as much as possible, to only take full stacks, or to only take full requests
|
||||||
* In combination with assembler recipe switching, using RoR logic, this means that on-demand recipe automation is now possible
|
* In combination with assembler recipe switching, using RoR logic, this means that on-demand recipe automation is now possible
|
||||||
* Still in testing, there's no recpes for any of the parts yet
|
* Still in testing, there's no recipes for any of the parts yet
|
||||||
|
* Cargo door
|
||||||
|
* Steel grate door which goes well with the cargo elevators
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* Updated chinese localization
|
* Updated chinese localization
|
||||||
@ -71,6 +73,20 @@
|
|||||||
* Standard control units now use rubber instead of speed I upgrades
|
* Standard control units now use rubber instead of speed I upgrades
|
||||||
* Advanced control units now use hardplastics instead of speed III upgrades
|
* Advanced control units now use hardplastics instead of speed III upgrades
|
||||||
* Quantum computers now use speed III upgrades instead of overdrive I
|
* Quantum computers now use speed III upgrades instead of overdrive I
|
||||||
|
* Updated electric furnace, burner press and electric press GUIs
|
||||||
|
* The RoR terminal can now accept RoR controller input, allowing the terminal screen to be written directly and RoR terminal commands to be executed via incoming RoR signals
|
||||||
|
* The last part seems redundant, why would you need to send RoR by sending RoR? The answer being, the terminal can be toggled to send polling signals, which will run independently of the source
|
||||||
|
* For AUTOCALs, this means that they can now send polling signals "in parallel", i.e. independently of the code that actually runs on said AUTOCAL, by simply toggling polling on a terminal
|
||||||
|
* Since AUTOCALs now have a proper screen to output things with, it is now theoretically possible to program a functioning arcade machine (with terminal graphics)
|
||||||
|
* Glyphids will now try to target new players every 5 seconds if their current target is farther away than any other potential target
|
||||||
|
* 1/3 of glyphids do not have this behavior, this means that larger groups of glyphids cannot be trapped indefinitely by triggering target changes on purpose
|
||||||
|
* Pedestal blocks fitted with charms now have a 200x200 block square area around them where the charm effect of repelling meteors applies to all players
|
||||||
|
* Pedestal blocks fitted with golden defusers now have a 50x50 block area around them where creepers are automatically defused
|
||||||
|
* Disabled GTNH-NEI filter drag functionality because GTNH-NEI breaks the pattern slots of the new pneumatics stuff and the person who added it originally was too bald to fix it despite being told multiple times
|
||||||
|
* 70k it's 70k and he's bald bald haha bald head
|
||||||
|
* baldie baldie hahaha he bald he has the no of hair
|
||||||
|
* follically challenged baldie bald head
|
||||||
|
* Increased flue gas burn value from 10kTU to 25kTU
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed AUTOCAL's number comparison functions not working with variable substitution as advertised
|
* Fixed AUTOCAL's number comparison functions not working with variable substitution as advertised
|
||||||
@ -85,3 +101,5 @@
|
|||||||
* Fixed AUTOCAL's $buffer$ substitution not working
|
* Fixed AUTOCAL's $buffer$ substitution not working
|
||||||
* Fixed meteorite sword localization still being broken
|
* Fixed meteorite sword localization still being broken
|
||||||
* Fixed missing localization on the FM radio
|
* Fixed missing localization on the FM radio
|
||||||
|
* Fixed mufflers not working on large doors
|
||||||
|
* Fixed the electric press not displaying the currently pressed item in the model
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
mod_version=1.0.27
|
mod_version=1.0.27
|
||||||
# Empty build number makes a release type
|
# Empty build number makes a release type
|
||||||
mod_build_number=5719
|
mod_build_number=5751
|
||||||
|
|
||||||
credits=HbMinecraft,\
|
credits=HbMinecraft,\
|
||||||
\ rodolphito (explosion algorithms),\
|
\ rodolphito (explosion algorithms),\
|
||||||
|
|||||||
@ -1907,11 +1907,11 @@ public class ModBlocks {
|
|||||||
|
|
||||||
pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(2F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube");
|
pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(2F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube");
|
||||||
pneumatic_tube_paintable = new PneumoTubePaintableBlock().setBlockName("pneumatic_tube_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
pneumatic_tube_paintable = new PneumoTubePaintableBlock().setBlockName("pneumatic_tube_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||||
pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access");
|
pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access");
|
||||||
pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter");
|
pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter");
|
||||||
pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono");
|
pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono");
|
||||||
pneumatic_storage_importer = new PneumoStorageImporter().setBlockName("pneumatic_storage_importer").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_importer");
|
pneumatic_storage_importer = new PneumoStorageImporter().setBlockName("pneumatic_storage_importer").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_importer");
|
||||||
pneumatic_storage_exporter = new PneumoStorageExporter().setBlockName("pneumatic_storage_exporter").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_exporter");
|
pneumatic_storage_exporter = new PneumoStorageExporter().setBlockName("pneumatic_storage_exporter").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_exporter");
|
||||||
|
|
||||||
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
|
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,19 @@
|
|||||||
package com.hbm.blocks.generic;
|
package com.hbm.blocks.generic;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.extprop.HbmPlayerProps;
|
import com.hbm.extprop.HbmPlayerProps;
|
||||||
import com.hbm.inventory.recipes.PedestalRecipes;
|
import com.hbm.inventory.recipes.PedestalRecipes;
|
||||||
import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe;
|
import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.armor.ItemModDefuser;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.particle.helper.ExplosionSmallCreator;
|
import com.hbm.particle.helper.ExplosionSmallCreator;
|
||||||
import com.hbm.util.Compat;
|
import com.hbm.util.Compat;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
@ -18,6 +23,7 @@ import net.minecraft.block.BlockContainer;
|
|||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
@ -194,8 +200,24 @@ public class BlockPedestal extends BlockContainer {
|
|||||||
|
|
||||||
public ItemStack item;
|
public ItemStack item;
|
||||||
|
|
||||||
@Override public boolean canUpdate() { return false; }
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
|
||||||
|
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0) {
|
||||||
|
|
||||||
|
if(this.item != null) {
|
||||||
|
if(item.getItem() == ModItems.protection_charm) pushPedestalEntry(worldObj, PedestalEntryType.CHARM_OF_PROTECTION, xCoord, yCoord, zCoord);
|
||||||
|
if(item.getItem() == ModItems.meteor_charm) pushPedestalEntry(worldObj, PedestalEntryType.METEORITE_CHARM, xCoord, yCoord, zCoord);
|
||||||
|
if(worldObj.getTotalWorldTime() % 60 == 0 && item.getItem() == ModItems.defuser_gold) castrateCreepers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void castrateCreepers() {
|
||||||
|
List<EntityCreeper> creepers = worldObj.getEntitiesWithinAABB(EntityCreeper.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).expand(25, 25, 25));
|
||||||
|
for(EntityCreeper creeper : creepers) ItemModDefuser.castrateCreeper(creeper, null, false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket() {
|
public Packet getDescriptionPacket() {
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
@ -224,4 +246,48 @@ public class BlockPedestal extends BlockContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HashMap<Integer, List<PedestalEntry>> pedestalEntries = new HashMap();
|
||||||
|
|
||||||
|
public static void pushPedestalEntry(World world, PedestalEntryType type, int x, int y, int z) {
|
||||||
|
PedestalEntry entry = new PedestalEntry(type, x, y, z, world.getTotalWorldTime());
|
||||||
|
|
||||||
|
int dim = world.provider.dimensionId;
|
||||||
|
List<PedestalEntry> entries = pedestalEntries.get(dim);
|
||||||
|
|
||||||
|
if(entries == null) {
|
||||||
|
entries = new ArrayList();
|
||||||
|
pedestalEntries.put(dim, entries);
|
||||||
|
}
|
||||||
|
entries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int timeout = 60; //3 seconds
|
||||||
|
|
||||||
|
public static void checkPedestalEntries(int dim, long currentTime) {
|
||||||
|
List<PedestalEntry> entries = getEntriesForDimension(dim);
|
||||||
|
if(entries == null) return;
|
||||||
|
entries.removeIf(x -> { return x.timestamp < currentTime - timeout; });
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<PedestalEntry> getEntriesForDimension(int dim) {
|
||||||
|
return pedestalEntries.get(dim);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class PedestalEntry {
|
||||||
|
public PedestalEntryType type;
|
||||||
|
public BlockPos pos;
|
||||||
|
public long timestamp;
|
||||||
|
|
||||||
|
public PedestalEntry(PedestalEntryType type, int x, int y, int z, long timestamp) {
|
||||||
|
this.type = type;
|
||||||
|
this.pos = new BlockPos(x, y, z);
|
||||||
|
this.timestamp = timestamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static enum PedestalEntryType {
|
||||||
|
CHARM_OF_PROTECTION,
|
||||||
|
METEORITE_CHARM
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -223,6 +223,13 @@ public class EntityGlyphid extends EntityMob implements IResistanceProvider {
|
|||||||
@Override
|
@Override
|
||||||
protected void updateEntityActionState() {
|
protected void updateEntityActionState() {
|
||||||
super.updateEntityActionState();
|
super.updateEntityActionState();
|
||||||
|
|
||||||
|
// re-scan for new targets every so often
|
||||||
|
// every third glyphid does not do this, so you cannot "juggle" hordes on purpose
|
||||||
|
if(this.getEntityId() % 3 > 0 && (this.getEntityId() + this.ticksExisted) % 100 == 0) {
|
||||||
|
Entity newTarget = this.findPlayerToAttack();
|
||||||
|
if(newTarget != null) this.setTarget(newTarget);
|
||||||
|
}
|
||||||
|
|
||||||
if(!this.isPotionActive(Potion.blindness)) {
|
if(!this.isPotionActive(Potion.blindness)) {
|
||||||
if (!this.hasPath()) {
|
if (!this.hasPath()) {
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
package com.hbm.handler;
|
package com.hbm.handler;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
|
import com.hbm.blocks.generic.BlockPedestal;
|
||||||
|
import com.hbm.blocks.generic.BlockPedestal.PedestalEntry;
|
||||||
|
import com.hbm.blocks.generic.BlockPedestal.PedestalEntryType;
|
||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.MobConfig;
|
import com.hbm.config.MobConfig;
|
||||||
import com.hbm.config.WorldConfig;
|
import com.hbm.config.WorldConfig;
|
||||||
@ -231,9 +235,22 @@ public class BossSpawnHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only check if either charm is not present
|
||||||
|
if(!repell || strike) {
|
||||||
|
int x = (int) Math.floor(p.posX);
|
||||||
|
int z = (int) Math.floor(p.posZ);
|
||||||
|
|
||||||
|
List<PedestalEntry> entries = BlockPedestal.getEntriesForDimension(world.provider.dimensionId);
|
||||||
|
if(entries != null) for(PedestalEntry entry : entries) {
|
||||||
|
if(Math.abs(entry.pos.getX() - x) <= 100 && Math.abs(entry.pos.getZ() - z) <= 100) {
|
||||||
|
if(entry.type == PedestalEntryType.CHARM_OF_PROTECTION) repell = true;
|
||||||
|
if(entry.type == PedestalEntryType.METEORITE_CHARM) strike = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(strike)
|
if(strike) spawnMeteorAtPlayer(p, repell);
|
||||||
spawnMeteorAtPlayer(p, repell);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,9 +41,11 @@ public class PressRecipeHandler extends TemplateRecipeHandler implements ICompat
|
|||||||
return "pressing";
|
return "pressing";
|
||||||
}
|
}
|
||||||
public LinkedList<RecipeTransferRect> transferRectsRec = new LinkedList<RecipeTransferRect>();
|
public LinkedList<RecipeTransferRect> transferRectsRec = new LinkedList<RecipeTransferRect>();
|
||||||
public LinkedList<RecipeTransferRect> transferRectsGui = new LinkedList<RecipeTransferRect>();
|
public LinkedList<RecipeTransferRect> transferRectsPress = new LinkedList<RecipeTransferRect>();
|
||||||
|
public LinkedList<RecipeTransferRect> transferRectsEPress = new LinkedList<RecipeTransferRect>();
|
||||||
public LinkedList<Class<? extends GuiContainer>> guiRec = new LinkedList<Class<? extends GuiContainer>>();
|
public LinkedList<Class<? extends GuiContainer>> guiRec = new LinkedList<Class<? extends GuiContainer>>();
|
||||||
public LinkedList<Class<? extends GuiContainer>> guiGui = new LinkedList<Class<? extends GuiContainer>>();
|
public LinkedList<Class<? extends GuiContainer>> guiPress = new LinkedList<Class<? extends GuiContainer>>();
|
||||||
|
public LinkedList<Class<? extends GuiContainer>> guiEPress = new LinkedList<Class<? extends GuiContainer>>();
|
||||||
|
|
||||||
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe {
|
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe {
|
||||||
PositionedStack input;
|
PositionedStack input;
|
||||||
@ -130,21 +132,24 @@ public class PressRecipeHandler extends TemplateRecipeHandler implements ICompat
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<? extends GuiContainer> getGuiClass() {
|
public Class<? extends GuiContainer> getGuiClass() {
|
||||||
// return GUIMachineShredder.class;
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadTransferRects() {
|
public void loadTransferRects() {
|
||||||
transferRectsGui = new LinkedList<RecipeTransferRect>();
|
transferRectsPress = new LinkedList<RecipeTransferRect>();
|
||||||
guiGui = new LinkedList<Class<? extends GuiContainer>>();
|
transferRectsEPress = new LinkedList<RecipeTransferRect>();
|
||||||
|
guiPress = new LinkedList<Class<? extends GuiContainer>>();
|
||||||
|
guiEPress = new LinkedList<Class<? extends GuiContainer>>();
|
||||||
|
|
||||||
transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6, 23, 24, 18), "pressing"));
|
transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6, 23, 24, 18), "pressing"));
|
||||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "pressing"));
|
transferRectsPress.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "pressing"));
|
||||||
guiGui.add(GUIMachinePress.class);
|
transferRectsEPress.add(new RecipeTransferRect(new Rectangle(13 + 6 + 18, 23, 24, 18), "pressing"));
|
||||||
guiGui.add(GUIMachineEPress.class);
|
guiPress.add(GUIMachinePress.class);
|
||||||
|
guiEPress.add(GUIMachineEPress.class);
|
||||||
RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects);
|
RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects);
|
||||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
RecipeTransferRectHandler.registerRectsToGuis(guiPress, transferRectsPress);
|
||||||
|
RecipeTransferRectHandler.registerRectsToGuis(guiEPress, transferRectsEPress);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -22,20 +22,20 @@ public class ContainerElectricFurnace extends Container {
|
|||||||
|
|
||||||
diFurnace = tedf;
|
diFurnace = tedf;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(tedf, 0, 56, 53));
|
this.addSlotToContainer(new Slot(tedf, 0, 152, 54));
|
||||||
this.addSlotToContainer(new Slot(tedf, 1, 56, 17));
|
this.addSlotToContainer(new Slot(tedf, 1, 20, 35));
|
||||||
this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 2, 116, 35));
|
this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 2, 80, 35));
|
||||||
//Upgrades
|
//Upgrades
|
||||||
this.addSlotToContainer(new SlotUpgrade(tedf, 3, 147, 34));
|
this.addSlotToContainer(new SlotUpgrade(tedf, 3, 111, 34));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++) {
|
for(int i = 0; i < 3; i++) {
|
||||||
for(int j = 0; j < 9; j++) {
|
for(int j = 0; j < 9; j++) {
|
||||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 9; i++) {
|
for(int i = 0; i < 9; i++) {
|
||||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
|
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,24 +23,24 @@ private TileEntityMachineEPress nukeBoy;
|
|||||||
nukeBoy = tedf;
|
nukeBoy = tedf;
|
||||||
|
|
||||||
//Battery
|
//Battery
|
||||||
this.addSlotToContainer(new Slot(tedf, 0, 44, 53));
|
this.addSlotToContainer(new Slot(tedf, 0, 152, 54));
|
||||||
//Stamp
|
//Stamp
|
||||||
this.addSlotToContainer(new Slot(tedf, 1, 80, 17));
|
this.addSlotToContainer(new Slot(tedf, 1, 19, 15));
|
||||||
//Input
|
//Input
|
||||||
this.addSlotToContainer(new Slot(tedf, 2, 80, 53));
|
this.addSlotToContainer(new Slot(tedf, 2, 19, 51));
|
||||||
//Output
|
//Output
|
||||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 140, 35));
|
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 79, 33));
|
||||||
//Upgrade
|
//Upgrade
|
||||||
this.addSlotToContainer(new SlotUpgrade(tedf, 4, 44, 21));
|
this.addSlotToContainer(new SlotUpgrade(tedf, 4, 111, 32));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++) {
|
for(int i = 0; i < 3; i++) {
|
||||||
for(int j = 0; j < 9; j++) {
|
for(int j = 0; j < 9; j++) {
|
||||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 9; i++) {
|
for(int i = 0; i < 9; i++) {
|
||||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
|
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -225,7 +225,7 @@ public class ContainerPneumoStorageAccess extends Container implements ICustomPa
|
|||||||
held = slot.getStack().copy();
|
held = slot.getStack().copy();
|
||||||
held.stackSize = 1;
|
held.stackSize = 1;
|
||||||
}
|
}
|
||||||
if(held.stackSize <= 0) held = null;
|
if(held != null && held.stackSize <= 0) held = null;
|
||||||
this.player.inventory.setItemStack(held);
|
this.player.inventory.setItemStack(held);
|
||||||
sendClickToServer(ClickType.RIGHT_CLICK, hash);
|
sendClickToServer(ClickType.RIGHT_CLICK, hash);
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public class ContainerPneumoStorageExporter extends ContainerBase {
|
|||||||
this.addSlotToContainer(new SlotPattern(exporter, i, 17 + (i % 3) * 18, 17 + (i / 3) * 18).allowStackSize());
|
this.addSlotToContainer(new SlotPattern(exporter, i, 17 + (i % 3) * 18, 17 + (i / 3) * 18).allowStackSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
addSlots(exporter, 9, 80, 17, 3, 3);
|
addTakeOnlySlots(exporter, 9, 80, 17, 3, 3);
|
||||||
playerInv(invPlayer, 103);
|
playerInv(invPlayer, 103);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,4 +41,33 @@ public class ContainerPneumoStorageExporter extends ContainerBase {
|
|||||||
slot.putStack(held);
|
slot.putStack(held);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||||
|
ItemStack slotOriginal = null;
|
||||||
|
Slot slot = (Slot) this.inventorySlots.get(index);
|
||||||
|
|
||||||
|
if(slot != null && slot.getHasStack()) {
|
||||||
|
ItemStack slotStack = slot.getStack();
|
||||||
|
slotOriginal = slotStack.copy();
|
||||||
|
|
||||||
|
if(index <= tile.getSizeInventory() - 1) {
|
||||||
|
if(!this.mergeItemStack(slotStack, tile.getSizeInventory(), this.inventorySlots.size(), true)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(slotStack.stackSize == 0) {
|
||||||
|
slot.putStack(null);
|
||||||
|
} else {
|
||||||
|
slot.onSlotChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
slot.onPickupFromSlot(player, slotStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
return slotOriginal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,6 @@ public class ContainerPneumoStorageMono extends ContainerBase {
|
|||||||
if(index < 0 || index >= 3) {
|
if(index < 0 || index >= 3) {
|
||||||
return super.slotClick(index, button, mode, player);
|
return super.slotClick(index, button, mode, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Slot slot = this.getSlot(index);
|
Slot slot = this.getSlot(index);
|
||||||
TileEntityPneumoStorageMono mono = (TileEntityPneumoStorageMono) this.tile;
|
TileEntityPneumoStorageMono mono = (TileEntityPneumoStorageMono) this.tile;
|
||||||
|
|||||||
@ -412,7 +412,7 @@ public class Fluids {
|
|||||||
CONCRETE = new FluidType("CONCRETE", 0xA2A2A2, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
|
CONCRETE = new FluidType("CONCRETE", 0xA2A2A2, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
|
||||||
DHC = new FluidType("DHC", 0xD2AFFF, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS);
|
DHC = new FluidType("DHC", 0xD2AFFF, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS);
|
||||||
AIRBLAST = new FluidType("AIRBLAST", 0xFFDADA, 0, 3, 0, EnumSymbol.NONE).setTemp(1_200).addTraits(GASEOUS);
|
AIRBLAST = new FluidType("AIRBLAST", 0xFFDADA, 0, 3, 0, EnumSymbol.NONE).setTemp(1_200).addTraits(GASEOUS);
|
||||||
FLUE = new FluidType(155, "FLUE", 0x131313, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFF4545, 0xFFE97F)).addTraits(new FT_Flammable(10_000), GASEOUS, new FT_Polluting().burn(PollutionType.SOOT, SOOT_GAS).release(PollutionType.SOOT, SOOT_GAS * 25));
|
FLUE = new FluidType(155, "FLUE", 0x131313, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFF4545, 0xFFE97F)).addTraits(new FT_Flammable(25_000), GASEOUS, new FT_Polluting().burn(PollutionType.SOOT, SOOT_GAS).release(PollutionType.SOOT, SOOT_GAS * 25));
|
||||||
|
|
||||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||||
//ADD NEW FLUIDS HERE
|
//ADD NEW FLUIDS HERE
|
||||||
|
|||||||
@ -20,14 +20,14 @@ public class GUIMachineEPress extends GuiInfoContainer {
|
|||||||
press = tedf;
|
press = tedf;
|
||||||
|
|
||||||
this.xSize = 176;
|
this.xSize = 176;
|
||||||
this.ySize = 166;
|
this.ySize = 186;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 17, guiTop + 69 - 52, 16, 52, press.power, press.maxPower);
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 52 - 34, 16, 34, press.power, press.maxPower);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -44,10 +44,10 @@ public class GUIMachineEPress extends GuiInfoContainer {
|
|||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
int i = (int) (press.power * 52 / press.maxPower);
|
int i = (int) (press.power * 34 / press.maxPower);
|
||||||
drawTexturedModalRect(guiLeft + 17, guiTop + 69 - i, 176, 52 - i, 16, i);
|
drawTexturedModalRect(guiLeft + 152, guiTop + 52 - i, 176, 34 - i, 16, i);
|
||||||
|
|
||||||
int k = (int) (press.renderPress * 16 / press.maxPress);
|
int k = (int) (press.renderPress * 16 / press.maxPress);
|
||||||
this.drawTexturedModalRect(guiLeft + 79, guiTop + 35, 192, 0, 18, k);
|
this.drawTexturedModalRect(guiLeft + 18, guiTop + 33, 192, 0, 18, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,32 +16,32 @@ import com.hbm.util.i18n.I18nUtil;
|
|||||||
public class GUIMachineElectricFurnace extends GuiInfoContainer {
|
public class GUIMachineElectricFurnace extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUIElectricFurnace.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUIElectricFurnace.png");
|
||||||
private TileEntityMachineElectricFurnace diFurnace;
|
private TileEntityMachineElectricFurnace furnace;
|
||||||
|
|
||||||
public GUIMachineElectricFurnace(InventoryPlayer invPlayer, TileEntityMachineElectricFurnace tedf) {
|
public GUIMachineElectricFurnace(InventoryPlayer invPlayer, TileEntityMachineElectricFurnace furnace) {
|
||||||
super(new ContainerElectricFurnace(invPlayer, tedf));
|
super(new ContainerElectricFurnace(invPlayer, furnace));
|
||||||
diFurnace = tedf;
|
this.furnace = furnace;
|
||||||
|
|
||||||
this.xSize = 176;
|
this.xSize = 176;
|
||||||
this.ySize = 166;
|
this.ySize = 186;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 20, guiTop + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower);
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 52 - 34, 16, 34, furnace.power, furnace.maxPower);
|
||||||
|
|
||||||
String[] upgradeText = new String[3];
|
String[] upgradeText = new String[3];
|
||||||
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
||||||
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
||||||
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
||||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 151, guiTop + 19, 8, 8, mouseX, mouseY, upgradeText);
|
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 116, guiTop + 20, 8, 8, mouseX, mouseY, upgradeText);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||||
String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName());
|
String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.getInventoryName());
|
||||||
|
|
||||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||||
@ -58,22 +58,23 @@ public class GUIMachineElectricFurnace extends GuiInfoContainer {
|
|||||||
//if initial ZE is still present, it'll be used instead
|
//if initial ZE is still present, it'll be used instead
|
||||||
//works so that container packets can still be used
|
//works so that container packets can still be used
|
||||||
//efficiency!
|
//efficiency!
|
||||||
if(diFurnace.isInvalid() && diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) instanceof TileEntityMachineElectricFurnace)
|
if(furnace.isInvalid() && furnace.getWorldObj().getTileEntity(furnace.xCoord, furnace.yCoord, furnace.zCoord) instanceof TileEntityMachineElectricFurnace)
|
||||||
diFurnace = (TileEntityMachineElectricFurnace) diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord);
|
furnace = (TileEntityMachineElectricFurnace) furnace.getWorldObj().getTileEntity(furnace.xCoord, furnace.yCoord, furnace.zCoord);
|
||||||
|
|
||||||
if(diFurnace.hasPower()) {
|
if(furnace.hasPower()) {
|
||||||
int i = (int)diFurnace.getPowerScaled(52);
|
int p = (int) furnace.getPowerScaled(34);
|
||||||
drawTexturedModalRect(guiLeft + 20, guiTop + 69 - i, 200, 52 - i, 16, i);
|
drawTexturedModalRect(guiLeft + 152, guiTop + 52 - p, 176, 64 - p, 16, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(diFurnace.getWorldObj().getBlock(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) == ModBlocks.machine_electric_furnace_on) {
|
if(furnace.getWorldObj().getBlock(furnace.xCoord, furnace.yCoord, furnace.zCoord) == ModBlocks.machine_electric_furnace_on) {
|
||||||
drawTexturedModalRect(guiLeft + 56, guiTop + 35, 176, 0, 16, 16);
|
drawTexturedModalRect(guiLeft + 45, guiTop + 20, 192, 12, 18, 16);
|
||||||
|
drawTexturedModalRect(guiLeft + 46, guiTop + 47, 192, 28, 18, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
int j1 = diFurnace.getProgressScaled(24);
|
int p = furnace.getProgressScaled(28);
|
||||||
drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 17, j1 + 1, 17);
|
drawTexturedModalRect(guiLeft + 43, guiTop + 36, 176, 0, p, 12);
|
||||||
|
|
||||||
this.drawInfoPanel(guiLeft + 151, guiTop + 19, 8, 8, 8);
|
this.drawInfoPanel(guiLeft + 116, guiTop + 20, 8, 8, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,7 +103,7 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen {
|
|||||||
if(checkClick(x, y, 144, 36, 18, 18)) {
|
if(checkClick(x, y, 144, 36, 18, 18)) {
|
||||||
try {
|
try {
|
||||||
File uploadFolder = new File(MainRegistry.configDir.getParentFile(), "hbmComputerUpload");
|
File uploadFolder = new File(MainRegistry.configDir.getParentFile(), "hbmComputerUpload");
|
||||||
File doc = new File(uploadFolder, "documentation.md");
|
File doc = new File(uploadFolder, "documentation_v1.1.md");
|
||||||
if(!uploadFolder.exists()) uploadFolder.mkdir();
|
if(!uploadFolder.exists()) uploadFolder.mkdir();
|
||||||
if(!doc.exists()) {
|
if(!doc.exists()) {
|
||||||
doc.createNewFile();
|
doc.createNewFile();
|
||||||
@ -127,18 +127,7 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen {
|
|||||||
script.setExecutable(false);
|
script.setExecutable(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/*FileReader reader = new FileReader(script);
|
|
||||||
BufferedReader buffer = new BufferedReader(reader);
|
|
||||||
String[] lines = buffer.lines().toArray(String[]::new);
|
|
||||||
buffer.close();
|
|
||||||
// this is going to blow the fuck up once we hit the max packet size, but let's ignore that for now
|
|
||||||
data = new NBTTagCompound();
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
for(int l = 0; l < lines.length; l++) {
|
|
||||||
builder.append(lines[i]);
|
|
||||||
if(l < lines.length - 1) builder.append("\n"); // yeah why the fuck not
|
|
||||||
}
|
|
||||||
data.setString("payload", builder.toString());*/
|
|
||||||
byte[] bytes = Files.readAllBytes(Paths.get(script.toURI()));
|
byte[] bytes = Files.readAllBytes(Paths.get(script.toURI()));
|
||||||
data = new NBTTagCompound();
|
data = new NBTTagCompound();
|
||||||
data.setString("payload", new String(bytes, StandardCharsets.UTF_8));
|
data.setString("payload", new String(bytes, StandardCharsets.UTF_8));
|
||||||
|
|||||||
@ -341,7 +341,24 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa
|
|||||||
@Override
|
@Override
|
||||||
@Optional.Method(modid = "NotEnoughItems")
|
@Optional.Method(modid = "NotEnoughItems")
|
||||||
public boolean handleDragNDrop(GuiContainer gui, int x, int y, ItemStack stack, int button) {
|
public boolean handleDragNDrop(GuiContainer gui, int x, int y, ItemStack stack, int button) {
|
||||||
if(gui instanceof GuiInfoContainer && stack != null){
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
// BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD! BALD!
|
||||||
|
|
||||||
|
/*if(gui instanceof GuiInfoContainer && stack != null){
|
||||||
Slot slot = getSlotAtPosition(x,y);
|
Slot slot = getSlotAtPosition(x,y);
|
||||||
if(slot instanceof SlotPattern){
|
if(slot instanceof SlotPattern){
|
||||||
if(inventorySlots instanceof ContainerBase) {
|
if(inventorySlots instanceof ContainerBase) {
|
||||||
@ -357,7 +374,7 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//all credits for impl to GTNH's EnderCore fork
|
//all credits for impl to GTNH's EnderCore fork
|
||||||
|
|||||||
@ -42,10 +42,11 @@ public class ItemModDefuser extends ItemArmorMod {
|
|||||||
|
|
||||||
List<EntityCreeper> creepers = entity.worldObj.getEntitiesWithinAABB(EntityCreeper.class, entity.boundingBox.expand(5, 5, 5));
|
List<EntityCreeper> creepers = entity.worldObj.getEntitiesWithinAABB(EntityCreeper.class, entity.boundingBox.expand(5, 5, 5));
|
||||||
|
|
||||||
for(EntityCreeper creeper : creepers) defuse(creeper, entity, true);
|
for(EntityCreeper creeper : creepers) castrateCreeper(creeper, entity, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean defuse(EntityCreeper creeper, EntityLivingBase entity, boolean dropItem) {
|
/** my bualls */
|
||||||
|
public static boolean castrateCreeper(EntityCreeper creeper, EntityLivingBase entity, boolean dropItem) {
|
||||||
|
|
||||||
creeper.setCreeperState(-1);
|
creeper.setCreeperState(-1);
|
||||||
creeper.getDataWatcher().updateObject(18, new Byte((byte) 0));
|
creeper.getDataWatcher().updateObject(18, new Byte((byte) 0));
|
||||||
@ -66,7 +67,7 @@ public class ItemModDefuser extends ItemArmorMod {
|
|||||||
if(dropItem) {
|
if(dropItem) {
|
||||||
creeper.worldObj.playSoundEffect(creeper.posX, creeper.posY, creeper.posZ, "hbm:item.pinBreak", 1.0F, 1.0F);
|
creeper.worldObj.playSoundEffect(creeper.posX, creeper.posY, creeper.posZ, "hbm:item.pinBreak", 1.0F, 1.0F);
|
||||||
creeper.dropItem(ModItems.safety_fuse, 1);
|
creeper.dropItem(ModItems.safety_fuse, 1);
|
||||||
creeper.attackEntityFrom(DamageSource.causeMobDamage(entity), 1.0F);
|
creeper.attackEntityFrom(entity != null ? DamageSource.causeMobDamage(entity) : DamageSource.magic, 1.0F);
|
||||||
creeper.addPotionEffect(new PotionEffect(Potion.weakness.id, 0, 200));
|
creeper.addPotionEffect(new PotionEffect(Potion.weakness.id, 0, 200));
|
||||||
}
|
}
|
||||||
creeper.getEntityData().setBoolean("hfr_defused", true);
|
creeper.getEntityData().setBoolean("hfr_defused", true);
|
||||||
|
|||||||
@ -38,11 +38,9 @@ public class ItemModMilk extends ItemArmorMod {
|
|||||||
public void modUpdate(EntityLivingBase entity, ItemStack armor) {
|
public void modUpdate(EntityLivingBase entity, ItemStack armor) {
|
||||||
|
|
||||||
List<Integer> ints = new ArrayList();
|
List<Integer> ints = new ArrayList();
|
||||||
|
|
||||||
Iterator iterator = ((Collection) entity.getActivePotionEffects()).iterator();
|
Iterator iterator = ((Collection) entity.getActivePotionEffects()).iterator();
|
||||||
|
|
||||||
while(iterator.hasNext()) {
|
while(iterator.hasNext()) {
|
||||||
|
|
||||||
PotionEffect eff = (PotionEffect) iterator.next();
|
PotionEffect eff = (PotionEffect) iterator.next();
|
||||||
|
|
||||||
if(HbmPotion.getIsBadEffect(Potion.potionTypes[eff.getPotionID()])) {
|
if(HbmPotion.getIsBadEffect(Potion.potionTypes[eff.getPotionID()])) {
|
||||||
@ -50,8 +48,6 @@ public class ItemModMilk extends ItemArmorMod {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Integer i : ints) {
|
for(Integer i : ints) entity.removePotionEffect(i);
|
||||||
entity.removePotionEffect(i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,7 @@ public class ItemDefuser extends ItemTooling {
|
|||||||
public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) {
|
public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) {
|
||||||
|
|
||||||
if(entity instanceof EntityCreeper) {
|
if(entity instanceof EntityCreeper) {
|
||||||
return ItemModDefuser.defuse((EntityCreeper) entity, player, true);
|
return ItemModDefuser.castrateCreeper((EntityCreeper) entity, player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(entity instanceof EntityGlyphidNuclear) {
|
if(entity instanceof EntityGlyphidNuclear) {
|
||||||
|
|||||||
@ -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 (5719)";
|
public static final String VERSION = "1.0.27 BETA (5751)";
|
||||||
//HBM's Beta Naming Convention:
|
//HBM's Beta Naming Convention:
|
||||||
//V T (X)
|
//V T (X)
|
||||||
//V -> next release version
|
//V -> next release version
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.google.common.collect.Multimap;
|
|||||||
import com.hbm.blocks.IStepTickReceiver;
|
import com.hbm.blocks.IStepTickReceiver;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.generic.BlockAshes;
|
import com.hbm.blocks.generic.BlockAshes;
|
||||||
|
import com.hbm.blocks.generic.BlockPedestal;
|
||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
import com.hbm.config.MobConfig;
|
import com.hbm.config.MobConfig;
|
||||||
import com.hbm.config.RadiationConfig;
|
import com.hbm.config.RadiationConfig;
|
||||||
@ -508,7 +509,7 @@ public class ModEventHandler {
|
|||||||
public void onLivingUpdate(LivingUpdateEvent event) {
|
public void onLivingUpdate(LivingUpdateEvent event) {
|
||||||
|
|
||||||
if(event.entityLiving instanceof EntityCreeper && event.entityLiving.getEntityData().getBoolean("hfr_defused")) {
|
if(event.entityLiving instanceof EntityCreeper && event.entityLiving.getEntityData().getBoolean("hfr_defused")) {
|
||||||
ItemModDefuser.defuse((EntityCreeper) event.entityLiving, null, false);
|
ItemModDefuser.castrateCreeper((EntityCreeper) event.entityLiving, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack[] prevArmor = event.entityLiving.previousEquipment;
|
ItemStack[] prevArmor = event.entityLiving.previousEquipment;
|
||||||
@ -586,12 +587,15 @@ public class ModEventHandler {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void worldTick(WorldTickEvent event) {
|
public void worldTick(WorldTickEvent event) {
|
||||||
|
|
||||||
|
World world = event.world;
|
||||||
|
long time = world.getTotalWorldTime();
|
||||||
|
|
||||||
if(event.world != null && !event.world.isRemote) {
|
if(world != null && !world.isRemote) {
|
||||||
|
|
||||||
if(reference != null) {
|
if(reference != null) {
|
||||||
for(Object player : event.world.playerEntities) {
|
for(Object player : world.playerEntities) {
|
||||||
if(((EntityPlayer) player).ridingEntity != null && event.world.getTotalWorldTime() % (1 * 60 * 20) == 0) {
|
if(((EntityPlayer) player).ridingEntity != null && time % (1 * 60 * 20) == 0) {
|
||||||
((EntityPlayer) player).mountEntity(null);
|
((EntityPlayer) player).mountEntity(null);
|
||||||
didSit = true;
|
didSit = true;
|
||||||
}
|
}
|
||||||
@ -605,7 +609,7 @@ public class ModEventHandler {
|
|||||||
|
|
||||||
int tickrate = Math.max(1, ServerConfig.ITEM_HAZARD_DROP_TICKRATE.get());
|
int tickrate = Math.max(1, ServerConfig.ITEM_HAZARD_DROP_TICKRATE.get());
|
||||||
|
|
||||||
if(event.world.getTotalWorldTime() % tickrate == 0) {
|
if(time % tickrate == 0) {
|
||||||
List loadedEntityList = new ArrayList();
|
List loadedEntityList = new ArrayList();
|
||||||
loadedEntityList.addAll(event.world.loadedEntityList); // ConcurrentModificationException my balls
|
loadedEntityList.addAll(event.world.loadedEntityList); // ConcurrentModificationException my balls
|
||||||
|
|
||||||
@ -618,13 +622,17 @@ public class ModEventHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityRailCarBase.updateMotion(event.world);
|
EntityRailCarBase.updateMotion(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(time % 20 == 0) {
|
||||||
|
BlockPedestal.checkPedestalEntries(world.provider.dimensionId, time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.phase == Phase.START) {
|
if(event.phase == Phase.START) {
|
||||||
BossSpawnHandler.rollTheDice(event.world);
|
BossSpawnHandler.rollTheDice(world);
|
||||||
TimedGenerator.automaton(event.world, 100);
|
TimedGenerator.automaton(world, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -176,7 +176,7 @@ public class HbmPotion extends Potion {
|
|||||||
public static boolean getIsBadEffect(Potion potion) {
|
public static boolean getIsBadEffect(Potion potion) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Field isBadEffect = ReflectionHelper.findField(Potion.class, "isBadEffect", "field_76418_K");
|
Field isBadEffect = ReflectionHelper.findField(Potion.class, "isBadEffect", "field_76418_K"); //TODO: use an AT for this
|
||||||
boolean ret = isBadEffect.getBoolean(potion);
|
boolean ret = isBadEffect.getBoolean(potion);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|||||||
@ -43,7 +43,8 @@ public class ItemRenderLibrary {
|
|||||||
|
|
||||||
renderers.put(Item.getItemFromBlock(ModBlocks.machine_cyclotron), new ItemRenderBase() {
|
renderers.put(Item.getItemFromBlock(ModBlocks.machine_cyclotron), new ItemRenderBase() {
|
||||||
public void renderInventory() {
|
public void renderInventory() {
|
||||||
GL11.glScaled(2.25, 2.25, 2.25);
|
GL11.glTranslated(0, -1, 0);
|
||||||
|
GL11.glScaled(2.75, 2.75, 2.75);
|
||||||
}
|
}
|
||||||
public void renderCommon() {
|
public void renderCommon() {
|
||||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
|||||||
@ -80,14 +80,10 @@ public class RenderEPress extends TileEntitySpecialRenderer {
|
|||||||
GL11.glRotatef(180, 0F, 1F, 0F);
|
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||||
|
|
||||||
switch(tileentity.getBlockMetadata() - BlockDummyable.offset) {
|
switch(tileentity.getBlockMetadata() - BlockDummyable.offset) {
|
||||||
case 2:
|
case 2: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||||
GL11.glRotatef(270, 0F, 1F, 0F); break;
|
case 4: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||||
case 4:
|
case 3: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||||
GL11.glRotatef(0, 0F, 1F, 0F); break;
|
case 5: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||||
case 3:
|
|
||||||
GL11.glRotatef(90, 0F, 1F, 0F); break;
|
|
||||||
case 5:
|
|
||||||
GL11.glRotatef(180, 0F, 1F, 0F); break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GL11.glRotatef(90, 0F, 1F, 0F);
|
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||||
|
|||||||
@ -51,8 +51,10 @@ public class RenderLandmine extends TileEntitySpecialRenderer {
|
|||||||
}
|
}
|
||||||
if(block == ModBlocks.mine_fat) {
|
if(block == ModBlocks.mine_fat) {
|
||||||
GL11.glScaled(0.25D, 0.25D, 0.25D);
|
GL11.glScaled(0.25D, 0.25D, 0.25D);
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
bindTexture(ResourceManager.mine_fat_tex);
|
bindTexture(ResourceManager.mine_fat_tex);
|
||||||
ResourceManager.mine_fat.renderAll();
|
ResourceManager.mine_fat.renderAll();
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
}
|
}
|
||||||
if(block == ModBlocks.mine_naval) {
|
if(block == ModBlocks.mine_naval) {
|
||||||
GL11.glScaled(1D, 1D, 1D);
|
GL11.glScaled(1D, 1D, 1D);
|
||||||
|
|||||||
@ -666,7 +666,7 @@ public abstract class DoorDecl {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public int timeToOpen() { return 120; }
|
@Override public int timeToOpen() { return 60; }
|
||||||
|
|
||||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, -1, 0, 3, 3, 1 } }; }
|
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, -1, 0, 3, 3, 1 } }; }
|
||||||
@Override public int[] getDimensions() { return new int[] { 2, 0, 0, 0, 1, 1 }; }
|
@Override public int[] getDimensions() { return new int[] { 2, 0, 0, 0, 1, 1 }; }
|
||||||
|
|||||||
@ -15,11 +15,6 @@ public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
|
|||||||
|
|
||||||
void nextMode(int i);
|
void nextMode(int i);
|
||||||
|
|
||||||
/*
|
|
||||||
default ModulePatternMatcher getMatcher(){
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void receiveControl(NBTTagCompound data) {
|
default void receiveControl(NBTTagCompound data) {
|
||||||
if(data.hasKey("slot")) {
|
if(data.hasKey("slot")) {
|
||||||
@ -44,11 +39,11 @@ public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Used for the copy tool
|
* Used for the copy tool
|
||||||
* @return The start and end (start inclusive, end exclusive) of the filter slots of the TE
|
* @return The start and end (start inclusive, end exclusive) of the filter slots of the TE // seven, what the fuck?
|
||||||
*/
|
*/
|
||||||
int[] getFilterSlots();
|
int[] getFilterSlots();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default NBTTagCompound getSettings(World world, int x, int y, int z) {
|
default NBTTagCompound getSettings(World world, int x, int y, int z) {
|
||||||
IInventory inv = (IInventory) this;
|
IInventory inv = (IInventory) this;
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
|||||||
@ -243,18 +243,18 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getOpenSoundLoop() != null) {
|
if(doorType.getOpenSoundLoop() != null) {
|
||||||
audio = MainRegistry.proxy.getLoopedSound(doorType.getOpenSoundLoop(), xCoord, yCoord, zCoord, doorType.getSoundVolume(), 10F, 1F);
|
audio = MainRegistry.proxy.getLoopedSound(doorType.getOpenSoundLoop(), xCoord, yCoord, zCoord, getVolume(), 10F, 1F);
|
||||||
audio.startSound();
|
audio.startSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getOpenSoundStart() != null) {
|
if(doorType.getOpenSoundStart() != null) {
|
||||||
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getOpenSoundStart(), doorType.getSoundVolume(), 1F, false);
|
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getOpenSoundStart(), getVolume(), 1F, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getSoundLoop2() != null) {
|
if(doorType.getSoundLoop2() != null) {
|
||||||
if(audio2 != null) audio2.stopSound();
|
if(audio2 != null) audio2.stopSound();
|
||||||
|
|
||||||
audio2 = MainRegistry.proxy.getLoopedSound(doorType.getSoundLoop2(), xCoord, yCoord, zCoord, doorType.getSoundVolume(), 10F, 1F);
|
audio2 = MainRegistry.proxy.getLoopedSound(doorType.getSoundLoop2(), xCoord, yCoord, zCoord, getVolume(), 10F, 1F);
|
||||||
audio2.startSound();
|
audio2.startSound();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -265,18 +265,18 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getCloseSoundLoop() != null) {
|
if(doorType.getCloseSoundLoop() != null) {
|
||||||
audio = MainRegistry.proxy.getLoopedSound(doorType.getCloseSoundLoop(), xCoord, yCoord, zCoord, doorType.getSoundVolume(), 10F, 1F);
|
audio = MainRegistry.proxy.getLoopedSound(doorType.getCloseSoundLoop(), xCoord, yCoord, zCoord, getVolume(), 10F, 1F);
|
||||||
audio.startSound();
|
audio.startSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getCloseSoundStart() != null) {
|
if(doorType.getCloseSoundStart() != null) {
|
||||||
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getCloseSoundStart(), doorType.getSoundVolume(), 1F, false);
|
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getCloseSoundStart(), getVolume(), 1F, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doorType.getSoundLoop2() != null) {
|
if(doorType.getSoundLoop2() != null) {
|
||||||
if(audio2 != null) audio2.stopSound();
|
if(audio2 != null) audio2.stopSound();
|
||||||
|
|
||||||
audio2 = MainRegistry.proxy.getLoopedSound(doorType.getSoundLoop2(), xCoord, yCoord, zCoord, doorType.getSoundVolume(), 10F, 1F);
|
audio2 = MainRegistry.proxy.getLoopedSound(doorType.getSoundLoop2(), xCoord, yCoord, zCoord, getVolume(), 10F, 1F);
|
||||||
audio2.startSound();
|
audio2.startSound();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -294,13 +294,13 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
|||||||
|
|
||||||
if(this.state == STATE_OPENING && state == STATE_OPEN) { // Door finished transitioning to open
|
if(this.state == STATE_OPENING && state == STATE_OPEN) { // Door finished transitioning to open
|
||||||
if(doorType.getOpenSoundEnd() != null) {
|
if(doorType.getOpenSoundEnd() != null) {
|
||||||
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getOpenSoundEnd(), doorType.getSoundVolume(), 1F, false);
|
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getOpenSoundEnd(), getVolume(), 1F, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.state == STATE_CLOSING && state == STATE_CLOSED) { // Door finished transitioning to closed
|
if(this.state == STATE_CLOSING && state == STATE_CLOSED) { // Door finished transitioning to closed
|
||||||
if(doorType.getCloseSoundEnd() != null) {
|
if(doorType.getCloseSoundEnd() != null) {
|
||||||
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getCloseSoundEnd(), doorType.getSoundVolume(), 1F, false);
|
worldObj.playSound(xCoord, yCoord, zCoord, doorType.getCloseSoundEnd(), getVolume(), 1F, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,6 +313,10 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getVolume() {
|
||||||
|
return getVolume(doorType.getSoundVolume());
|
||||||
|
}
|
||||||
|
|
||||||
public int getSkinIndex() {
|
public int getSkinIndex() {
|
||||||
return skinIndex;
|
return skinIndex;
|
||||||
|
|||||||
@ -147,10 +147,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE
|
|||||||
super.serialize(buf);
|
super.serialize(buf);
|
||||||
buf.writeLong(power);
|
buf.writeLong(power);
|
||||||
buf.writeInt(press);
|
buf.writeInt(press);
|
||||||
if (slots[2] == null)
|
BufferUtil.writeItemStack(buf, slots[2]);
|
||||||
buf.writeShort(-1); // indicate that the NBT doesn't actually exist to avoid null pointer errors.
|
|
||||||
else
|
|
||||||
BufferUtil.writeNBT(buf, slots[2].stackTagCompound);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -158,9 +155,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE
|
|||||||
super.deserialize(buf);
|
super.deserialize(buf);
|
||||||
this.power = buf.readLong();
|
this.power = buf.readLong();
|
||||||
this.syncPress = buf.readInt();
|
this.syncPress = buf.readInt();
|
||||||
|
this.syncStack = BufferUtil.readItemStack(buf);
|
||||||
NBTTagCompound stack = BufferUtil.readNBT(buf);
|
|
||||||
this.syncStack = ItemStack.loadItemStackFromNBT(stack);
|
|
||||||
|
|
||||||
this.turnProgress = 2;
|
this.turnProgress = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.hbm.tileentity.TileEntityLoadedBase;
|
|||||||
import com.hbm.tileentity.network.RTTYSystem;
|
import com.hbm.tileentity.network.RTTYSystem;
|
||||||
import com.hbm.util.BufferUtil;
|
import com.hbm.util.BufferUtil;
|
||||||
|
|
||||||
|
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||||
import cpw.mods.fml.common.Optional;
|
import cpw.mods.fml.common.Optional;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import li.cil.oc.api.machine.Arguments;
|
import li.cil.oc.api.machine.Arguments;
|
||||||
@ -24,7 +25,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||||
public class TileEntityRBMKTerminal extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver, SimpleComponent, CompatHandler.OCComponent {
|
public class TileEntityRBMKTerminal extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver, SimpleComponent, CompatHandler.OCComponent, IRORInteractive {
|
||||||
|
|
||||||
public String[] history = new String[17];
|
public String[] history = new String[17];
|
||||||
public String channel = "";
|
public String channel = "";
|
||||||
@ -249,4 +250,46 @@ public class TileEntityRBMKTerminal extends TileEntityLoadedBase implements IGUI
|
|||||||
markDirty();
|
markDirty();
|
||||||
return new Object[] {true};
|
return new Object[] {true};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getFunctionInfo() {
|
||||||
|
return new String[] {
|
||||||
|
PREFIX_FUNCTION + "clear",
|
||||||
|
PREFIX_FUNCTION + "write" + NAME_SEPARATOR + "text",
|
||||||
|
PREFIX_FUNCTION + "set<line#>" + NAME_SEPARATOR + "text",
|
||||||
|
PREFIX_FUNCTION + "submit" + NAME_SEPARATOR + "command",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String runRORFunction(String name, String[] params) {
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "clear").equals(name)) {
|
||||||
|
for(int i = 0; i < history.length; i++) history[i] = "";
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String allParams = String.join(" ", params);
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "write").equals(name)) {
|
||||||
|
this.push(allParams);
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(name.startsWith(PREFIX_FUNCTION + "set")) {
|
||||||
|
int line = IRORInteractive.parseInt(name.substring(3), 1, 17) - 1;
|
||||||
|
this.history[line] = allParams;
|
||||||
|
this.markChanged();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((PREFIX_FUNCTION + "submit").equals(name)) {
|
||||||
|
this.eval(allParams);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -294,4 +294,3 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU
|
|||||||
return new int[] {0, 9};
|
return new int[] {0, 9};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ package com.hbm.tileentity.network.pneumatic;
|
|||||||
import com.hbm.interfaces.IControlReceiver;
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
import com.hbm.inventory.container.ContainerPneumoStorageExporter;
|
import com.hbm.inventory.container.ContainerPneumoStorageExporter;
|
||||||
import com.hbm.inventory.gui.GUIPneumoStorageExporter;
|
import com.hbm.inventory.gui.GUIPneumoStorageExporter;
|
||||||
|
import com.hbm.tileentity.IControlReceiverFilter;
|
||||||
import com.hbm.tileentity.network.RTTYSystem;
|
import com.hbm.tileentity.network.RTTYSystem;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class TileEntityPneumoStorageExporter extends TileEntityPneumaticMachineBase implements IRORInteractive, IControlReceiver {
|
public class TileEntityPneumoStorageExporter extends TileEntityPneumaticMachineBase implements IRORInteractive, IControlReceiver, IControlReceiverFilter {
|
||||||
|
|
||||||
/** If requests should be pulled repeatedly every tick */
|
/** If requests should be pulled repeatedly every tick */
|
||||||
public boolean continuousRequest = false;
|
public boolean continuousRequest = false;
|
||||||
@ -303,9 +304,20 @@ public class TileEntityPneumoStorageExporter extends TileEntityPneumaticMachineB
|
|||||||
if(data.hasKey("ror")) {
|
if(data.hasKey("ror")) {
|
||||||
this.rorConfiguredMode = !this.rorConfiguredMode;
|
this.rorConfiguredMode = !this.rorConfiguredMode;
|
||||||
}
|
}
|
||||||
|
if(data.hasKey("slot")) {
|
||||||
|
setFilterContents(data);
|
||||||
|
}
|
||||||
this.markChanged();
|
this.markChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getFilterSlots() {
|
||||||
|
return new int[] {0, 9};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nextMode(int i) { }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFunctionInfo() {
|
public String[] getFunctionInfo() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.network.pneumatic;
|
|||||||
import com.hbm.interfaces.IControlReceiver;
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
import com.hbm.inventory.container.ContainerPneumoStorageMono;
|
import com.hbm.inventory.container.ContainerPneumoStorageMono;
|
||||||
import com.hbm.inventory.gui.GUIPneumoStorageMono;
|
import com.hbm.inventory.gui.GUIPneumoStorageMono;
|
||||||
|
import com.hbm.tileentity.IControlReceiverFilter;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
|
|
||||||
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
|
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
|
||||||
@ -15,7 +16,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class TileEntityPneumoStorageMono extends TileEntityPneumaticStorageBase implements IPneumaticConnector, IFluidStandardReceiverMK2, ISlotMonitorProvider, IControlReceiver, IGUIProvider {
|
public class TileEntityPneumoStorageMono extends TileEntityPneumaticStorageBase implements IPneumaticConnector, IFluidStandardReceiverMK2, ISlotMonitorProvider, IControlReceiver, IGUIProvider, IControlReceiverFilter {
|
||||||
|
|
||||||
public static final int CAPACITY = 100_000;
|
public static final int CAPACITY = 100_000;
|
||||||
public int[] amounts;
|
public int[] amounts;
|
||||||
@ -86,4 +87,12 @@ public class TileEntityPneumoStorageMono extends TileEntityPneumaticStorageBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public long setupType(int index, ItemStack zeroStack, long amount) { return amount; }
|
@Override public long setupType(int index, ItemStack zeroStack, long amount) { return amount; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nextMode(int i) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getFilterSlots() {
|
||||||
|
return new int[] {0, 3};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,7 +116,5 @@ public class MapGenChainloader extends MapGenBase {
|
|||||||
blockMetas = event.metaArray;
|
blockMetas = event.metaArray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,43 +35,45 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
|||||||
|
|
||||||
boolean regTest = false;
|
boolean regTest = false;
|
||||||
|
|
||||||
public static boolean isInvalidBiome(BiomeGenBase biome) {
|
/** Includes all biomes tagged as ocean or river */
|
||||||
return BiomeDictionary.isBiomeOfType(biome, Type.OCEAN) || BiomeDictionary.isBiomeOfType(biome, Type.RIVER);
|
public static boolean isWaterBiome(BiomeGenBase biome) {
|
||||||
|
return BiomeDictionary.isBiomeOfType(biome, Type.WATER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Includes biomes with little height variation and sparse vegetation, excludes water biomes */
|
||||||
public static boolean isFlatBiome(BiomeGenBase biome) {
|
public static boolean isFlatBiome(BiomeGenBase biome) {
|
||||||
return biome.heightVariation <= 0.2F && !isInvalidBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SPARSE);
|
return biome.heightVariation <= 0.2F && !isWaterBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SPARSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NTMWorldGenerator() {
|
public NTMWorldGenerator() {
|
||||||
|
|
||||||
/// SPIRE ///
|
/// SPIRE ///
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("spire") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("spire") {{
|
||||||
canSpawn = biome -> biome.heightVariation <= 0.05F && !isInvalidBiome(biome);
|
canSpawn = biome -> biome.heightVariation <= 0.05F && !isWaterBiome(biome);
|
||||||
structure = new JigsawPiece("spire", StructureManager.spire, -1);
|
structure = new JigsawPiece("spire", StructureManager.spire, -1);
|
||||||
spawnWeight = StructureConfig.spireSpawnWeight;
|
spawnWeight = StructureConfig.spireSpawnWeight;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("features") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("features") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome);
|
canSpawn = biome -> !isWaterBiome(biome);
|
||||||
start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ());
|
start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ());
|
||||||
spawnWeight = StructureConfig.featuresSpawnWeight;
|
spawnWeight = StructureConfig.featuresSpawnWeight;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("bunker") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("bunker") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome);
|
canSpawn = biome -> !isWaterBiome(biome);
|
||||||
start = d -> new BunkerStart(d.getW(), d.getX(), d.getY(), d.getZ());
|
start = d -> new BunkerStart(d.getW(), d.getX(), d.getY(), d.getZ());
|
||||||
spawnWeight = StructureConfig.bunkerSpawnWeight;
|
spawnWeight = StructureConfig.bunkerSpawnWeight;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("vertibird") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("vertibird") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SANDY);
|
canSpawn = biome -> !isWaterBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SANDY);
|
||||||
structure = new JigsawPiece("vertibird", StructureManager.vertibird, -3);
|
structure = new JigsawPiece("vertibird", StructureManager.vertibird, -3);
|
||||||
spawnWeight = StructureConfig.vertibirdSpawnWeight;
|
spawnWeight = StructureConfig.vertibirdSpawnWeight;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("crashed_vertibird") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("crashed_vertibird") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SANDY);
|
canSpawn = biome -> !isWaterBiome(biome) && BiomeDictionary.isBiomeOfType(biome, Type.SANDY);
|
||||||
structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird, -10);
|
structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird, -10);
|
||||||
spawnWeight = StructureConfig.vertibirdCrashedSpawnWeight;
|
spawnWeight = StructureConfig.vertibirdCrashedSpawnWeight;
|
||||||
}});
|
}});
|
||||||
@ -116,7 +118,7 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("forestchem") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("forestchem") {{
|
||||||
canSpawn = biome -> biome.heightVariation <= 0.3F && !isInvalidBiome(biome);
|
canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome);
|
||||||
structure = new JigsawPiece("forest_chem", StructureManager.forest_chem, -9);
|
structure = new JigsawPiece("forest_chem", StructureManager.forest_chem, -9);
|
||||||
spawnWeight = StructureConfig.forestChemSpawnWeight;
|
spawnWeight = StructureConfig.forestChemSpawnWeight;
|
||||||
}});
|
}});
|
||||||
@ -130,7 +132,7 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("forest_post") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("forest_post") {{
|
||||||
canSpawn = biome -> biome.heightVariation <= 0.3F && !isInvalidBiome(biome);
|
canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome);
|
||||||
structure = new JigsawPiece("forest_post", StructureManager.forest_post, -10);
|
structure = new JigsawPiece("forest_post", StructureManager.forest_post, -10);
|
||||||
spawnWeight = StructureConfig.forestPostSpawnWeight;
|
spawnWeight = StructureConfig.forestPostSpawnWeight;
|
||||||
}});
|
}});
|
||||||
@ -160,13 +162,13 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("plane1") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("plane1") {{
|
||||||
canSpawn = biome -> biome.heightVariation <= 0.3F && !isInvalidBiome(biome);
|
canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome);
|
||||||
structure = new JigsawPiece("crashed_plane_1", StructureManager.plane1, -5);
|
structure = new JigsawPiece("crashed_plane_1", StructureManager.plane1, -5);
|
||||||
spawnWeight = StructureConfig.plane1SpawnWeight;
|
spawnWeight = StructureConfig.plane1SpawnWeight;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("plane2") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("plane2") {{
|
||||||
canSpawn = biome -> biome.heightVariation <= 0.3F && !isInvalidBiome(biome);
|
canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome);
|
||||||
structure = new JigsawPiece("crashed_plane_2", StructureManager.plane2, -8);
|
structure = new JigsawPiece("crashed_plane_2", StructureManager.plane2, -8);
|
||||||
spawnWeight = StructureConfig.plane2SpawnWeight;
|
spawnWeight = StructureConfig.plane2SpawnWeight;
|
||||||
}});
|
}});
|
||||||
@ -190,52 +192,52 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinA") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinA") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsASpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsASpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinB") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinB") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsB", StructureManager.ntmruinsB, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsB", StructureManager.ntmruinsB, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsBSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsBSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinC") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinC") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsC", StructureManager.ntmruinsC, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsC", StructureManager.ntmruinsC, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsCSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsCSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinD") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinD") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsD", StructureManager.ntmruinsD, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsD", StructureManager.ntmruinsD, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsDSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsDSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinE") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinE") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsE", StructureManager.ntmruinsE, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsE", StructureManager.ntmruinsE, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsESpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsESpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinF") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinF") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsF", StructureManager.ntmruinsF, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsF", StructureManager.ntmruinsF, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsFSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsFSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinG") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinG") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsG", StructureManager.ntmruinsG, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsG", StructureManager.ntmruinsG, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsGSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsGSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinH") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinH") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsH", StructureManager.ntmruinsH, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsH", StructureManager.ntmruinsH, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsHSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsHSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinI") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinI") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsI", StructureManager.ntmruinsI, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsI", StructureManager.ntmruinsI, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsISpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsISpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinJ") {{
|
NBTStructure.registerStructure(0, new SpawnCondition("ruinJ") {{
|
||||||
canSpawn = biome -> !isInvalidBiome(biome) && biome.canSpawnLightningBolt();
|
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||||
structure = new JigsawPiece("NTMRuinsJ", StructureManager.ntmruinsJ, -1) {{conformToTerrain = true;}};
|
structure = new JigsawPiece("NTMRuinsJ", StructureManager.ntmruinsJ, -1) {{conformToTerrain = true;}};
|
||||||
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsJSpawnWeight : 0;
|
spawnWeight = StructureConfig.enableRuins ? StructureConfig.ruinsJSpawnWeight : 0;
|
||||||
}});
|
}});
|
||||||
|
|||||||
@ -3,10 +3,12 @@ package com.hbm.world.generator;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.NotableComments;
|
||||||
import com.hbm.interfaces.Spaghetti;
|
import com.hbm.interfaces.Spaghetti;
|
||||||
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@NotableComments
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@Spaghetti("this class should be destroyed")
|
@Spaghetti("this class should be destroyed")
|
||||||
public class TimedGenerator {
|
public class TimedGenerator {
|
||||||
@ -46,7 +48,7 @@ public class TimedGenerator {
|
|||||||
list.add(job);
|
list.add(job);
|
||||||
}
|
}
|
||||||
|
|
||||||
//should i be doing this? probably not, but watch me go
|
//should i be doing this? probably not, but watch me go // no for the love of fucking god don't do this
|
||||||
public interface ITimedJob {
|
public interface ITimedJob {
|
||||||
|
|
||||||
public void work();
|
public void work();
|
||||||
|
|||||||
@ -359,7 +359,8 @@ container.paSource=Teilchenquelle
|
|||||||
container.plasmaHeater=Plasmaerhitzer
|
container.plasmaHeater=Plasmaerhitzer
|
||||||
container.pneumoStorageAccess=PLS Zugangsterminal
|
container.pneumoStorageAccess=PLS Zugangsterminal
|
||||||
container.pneumoStorageClutter=PLS Gerümpelkiste
|
container.pneumoStorageClutter=PLS Gerümpelkiste
|
||||||
container.pneumoStorageImporter=PSN Importer
|
container.pneumoStorageExporter=PLS Exporter
|
||||||
|
container.pneumoStorageImporter=PLS Importer
|
||||||
container.pneumoStorageMono=PLS Massenspeicher
|
container.pneumoStorageMono=PLS Massenspeicher
|
||||||
container.pneumoTube=Rohrpost
|
container.pneumoTube=Rohrpost
|
||||||
container.press=Befeuerte Presse
|
container.press=Befeuerte Presse
|
||||||
@ -4742,6 +4743,7 @@ tile.plasma_heater.name=Plasmaerhitzer
|
|||||||
tile.plushie.name=%s Plüschfigur
|
tile.plushie.name=%s Plüschfigur
|
||||||
tile.pneumatic_storage_access.name=Pneumatisches Lagersystem - Zugangsterminal
|
tile.pneumatic_storage_access.name=Pneumatisches Lagersystem - Zugangsterminal
|
||||||
tile.pneumatic_storage_clutter.name=Pneumatisches Lagersystem - Gerümpelkiste
|
tile.pneumatic_storage_clutter.name=Pneumatisches Lagersystem - Gerümpelkiste
|
||||||
|
tile.pneumatic_storage_exporter.name=Pneumatisches Lagersystem - Exporter
|
||||||
tile.pneumatic_storage_importer.name=Pneumatisches Lagersystem - Importer
|
tile.pneumatic_storage_importer.name=Pneumatisches Lagersystem - Importer
|
||||||
tile.pneumatic_storage_mono.name=Pneumatisches Lagersystem - Massenspeicher
|
tile.pneumatic_storage_mono.name=Pneumatisches Lagersystem - Massenspeicher
|
||||||
tile.pneumatic_tube.name=Rohrpost
|
tile.pneumatic_tube.name=Rohrpost
|
||||||
|
|||||||
@ -761,6 +761,7 @@ container.paSource=Particle Source
|
|||||||
container.plasmaHeater=Plasma Heater
|
container.plasmaHeater=Plasma Heater
|
||||||
container.pneumoStorageAccess=PSN Access Terminal
|
container.pneumoStorageAccess=PSN Access Terminal
|
||||||
container.pneumoStorageClutter=PSN Clutter Storage
|
container.pneumoStorageClutter=PSN Clutter Storage
|
||||||
|
container.pneumoStorageExporter=PSN Exporter
|
||||||
container.pneumoStorageImporter=PSN Importer
|
container.pneumoStorageImporter=PSN Importer
|
||||||
container.pneumoStorageMono=PSN Bulk Storage
|
container.pneumoStorageMono=PSN Bulk Storage
|
||||||
container.pneumoTube=Pneumatic Tube
|
container.pneumoTube=Pneumatic Tube
|
||||||
@ -6003,6 +6004,7 @@ tile.plasma_heater.name=Plasma Heater
|
|||||||
tile.plushie.name=%s Plushie
|
tile.plushie.name=%s Plushie
|
||||||
tile.pneumatic_storage_access.name=Pneumatic Storage Network - Access Terminal
|
tile.pneumatic_storage_access.name=Pneumatic Storage Network - Access Terminal
|
||||||
tile.pneumatic_storage_clutter.name=Pneumatic Storage Network - Clutter Storage
|
tile.pneumatic_storage_clutter.name=Pneumatic Storage Network - Clutter Storage
|
||||||
|
tile.pneumatic_storage_exporter.name=Pneumatic Storage Network - Exporter
|
||||||
tile.pneumatic_storage_importer.name=Pneumatic Storage Network - Importer
|
tile.pneumatic_storage_importer.name=Pneumatic Storage Network - Importer
|
||||||
tile.pneumatic_storage_mono.name=Pneumatic Storage Network - Bulk Storage
|
tile.pneumatic_storage_mono.name=Pneumatic Storage Network - Bulk Storage
|
||||||
tile.pneumatic_tube.name=Pneumatic Tube
|
tile.pneumatic_tube.name=Pneumatic Tube
|
||||||
|
|||||||
|
After Width: | Height: | Size: 370 B |
|
After Width: | Height: | Size: 294 B |
|
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 640 B |
|
Before Width: | Height: | Size: 528 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 588 B After Width: | Height: | Size: 695 B |
|
Before Width: | Height: | Size: 577 B After Width: | Height: | Size: 715 B |
|
Before Width: | Height: | Size: 490 B After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 331 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.1 KiB |
BIN
src/main/resources/assets/hbm/textures/items/drives.png
Normal file
|
After Width: | Height: | Size: 574 B |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 595 B After Width: | Height: | Size: 299 B |
|
Before Width: | Height: | Size: 623 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 538 B After Width: | Height: | Size: 249 B |
|
Before Width: | Height: | Size: 557 B After Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 296 B |
|
Before Width: | Height: | Size: 620 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 605 B After Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 8.0 KiB |