more base code, usable molds

This commit is contained in:
Boblet 2022-09-26 16:54:24 +02:00
parent 05d370e7d1
commit 52fc3868ff
11 changed files with 178 additions and 6 deletions

View File

@ -342,6 +342,7 @@ public class ModBlocks {
public static Block brick_light;
public static Block brick_compound;
public static Block brick_asbestos;
public static Block brick_fire;
public static Block cmb_brick;
public static Block cmb_brick_reinforced;
@ -1604,6 +1605,7 @@ public class ModBlocks {
cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick");
cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced");
brick_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("brick_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_asbestos");
brick_fire = new BlockGeneric(Material.rock).setBlockName("brick_fire").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_fire");
ducrete_smooth = new BlockGeneric(Material.rock).setBlockName("ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":ducrete");
@ -2707,6 +2709,7 @@ public class ModBlocks {
GameRegistry.registerBlock(brick_compound, ItemBlockBlastInfo.class, brick_compound.getUnlocalizedName());
GameRegistry.registerBlock(brick_light, ItemBlockBlastInfo.class, brick_light.getUnlocalizedName());
GameRegistry.registerBlock(brick_asbestos, brick_asbestos.getUnlocalizedName());
GameRegistry.registerBlock(brick_fire, ItemBlockBlastInfo.class, brick_fire.getUnlocalizedName());
//CMB Building Elements
GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName());

View File

@ -1,17 +1,31 @@
package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.ILookOverlay;
import com.hbm.inventory.material.Mats.MaterialStack;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMold;
import com.hbm.items.machine.ItemMold.Mold;
import com.hbm.tileentity.machine.TileEntityFoundryCastingBase;
import com.hbm.util.I18nUtil;
import api.hbm.block.ICrucibleAcceptor;
import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class FoundryCastingBase extends BlockContainer implements ICrucibleAcceptor {
public abstract class FoundryCastingBase extends BlockContainer implements ICrucibleAcceptor, IToolable, ILookOverlay {
protected FoundryCastingBase() {
super(Material.rock);
@ -51,4 +65,86 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) {
return true;
}
TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z);
//remove casted item
if(cast.slots[1] != null) {
if(!player.inventory.addItemStackToInventory(cast.slots[1].copy())) {
EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[1].copy());
world.spawnEntityInWorld(item);
} else {
player.inventoryContainer.detectAndSendChanges();
}
cast.slots[1] = null;
cast.markDirty();
return true;
}
//insert mold
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) {
Mold mold = ((ItemMold) player.getHeldItem().getItem()).getMold(player.getHeldItem());
if(mold.size == cast.getMoldSize()) {
cast.slots[0] = player.getHeldItem().copy();
cast.slots[0].stackSize = 1;
player.getHeldItem().stackSize--;
cast.markDirty();
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F);
return true;
}
}
return false;
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if(tool != ToolType.SCREWDRIVER)
return false;
TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z);
if(cast.slots[0] == null)
return false;
if(!player.inventory.addItemStackToInventory(cast.slots[0].copy())) {
EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[0].copy());
world.spawnEntityInWorld(item);
} else {
player.inventoryContainer.detectAndSendChanges();
}
cast.slots[0] = null;
cast.markDirty();
return true;
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z);
List<String> text = new ArrayList();
if(cast.slots[0] == null) {
text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noMold"));
} else if(cast.slots[0].getItem() == ModItems.mold){
Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]);
text.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("shape." + mold.shape.name().toLowerCase()) + " x" + mold.amount);
}
if(cast.type != null && cast.amount > 0) {
text.add(EnumChatFormatting.YELLOW + cast.type.names[0] + ": " + cast.amount + " / " + cast.getCapacity());
}
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text);
}
}

View File

@ -2,7 +2,6 @@ package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
@ -10,7 +9,6 @@ import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;

View File

@ -747,6 +747,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderBasin());
RenderingRegistry.registerBlockHandler(new RenderMold());
RenderingRegistry.registerBlockHandler(new RenderChannel());
RenderingRegistry.registerBlockHandler(new RenderOutlet());
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));

View File

@ -956,6 +956,8 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.foundry_mold), new Object[] { "B B", "BSB", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab });
addRecipeAuto(new ItemStack(ModBlocks.foundry_channel, 4), new Object[] { "B B", " S ", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab });
addRecipeAuto(new ItemStack(ModItems.mold_base), new Object[] { " B ", "BIB", " B ", 'B', ModItems.ingot_firebrick, 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.brick_fire), new Object[] { "BB", "BB", 'B', ModItems.ingot_firebrick });
addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire });
addShapelessAuto(new ItemStack(ModItems.upgrade_5g), new Object[] { ModItems.upgrade_template, ModItems.gem_alexandrite });

View File

@ -0,0 +1,31 @@
package com.hbm.render.block;
import com.hbm.blocks.machine.FoundryOutlet;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.world.IBlockAccess;
public class RenderOutlet implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return FoundryOutlet.renderID;
}
}

View File

@ -20,7 +20,6 @@ import api.hbm.block.ICrucibleAcceptor;
import api.hbm.tile.IHeatSource;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;

View File

@ -74,10 +74,11 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
if(this.type == null)
if(this.type == null) {
nbt.setInteger("type", -1);
else
} else {
nbt.setInteger("type", this.type.id);
}
nbt.setInteger("amount", this.amount);
}

View File

@ -10,6 +10,8 @@ import com.hbm.items.machine.ItemMold.Mold;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.oredict.OreDictionary;
@ -167,4 +169,37 @@ public abstract class TileEntityFoundryCastingBase extends TileEntityFoundryBase
@Override public void openInventory() { }
@Override public void closeInventory() { }
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
NBTTagList list = nbt.getTagList("items", 10);
slots = new ItemStack[getSizeInventory()];
for(int i = 0; i < list.tagCount(); i++) {
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
byte b0 = nbt1.getByte("slot");
if(b0 >= 0 && b0 < slots.length) {
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
}
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
NBTTagList list = new NBTTagList();
for(int i = 0; i < slots.length; i++) {
if(slots[i] != null) {
NBTTagCompound nbt1 = new NBTTagCompound();
nbt1.setByte("slot", (byte) i);
slots[i].writeToNBT(nbt1);
list.appendTag(nbt1);
}
}
nbt.setTag("items", list);
}
}

View File

@ -489,6 +489,8 @@ fluid.schrabidic_fluid=Schrabidische Säure
fluid.toxic_fluid=Stereotypischer grüner Schleim
fluid.volcanic_lava_fluid=Vulkanische Lava
foundry.noCast=Keine Form eingelegt!
geiger.chunkRad=Chunk-Strahlung:
geiger.envRad=Gesamte Umgebungsstrahlung:
geiger.playerRad=Spieler-Kontaminierung:
@ -3173,6 +3175,7 @@ tile.brick_dungeon.name=Berzelianitziegel
tile.brick_dungeon_circle.name=Berzelianitkreis
tile.brick_dungeon_flat.name=Berzelianitblock
tile.brick_dungeon_tile.name=Berzelianitfliese
tile.brick_fire.name=Schamottsteinziegel
tile.brick_jungle.name=Enargitziegel
tile.brick_jungle_circle.name=Mechanistenzirkel
tile.brick_jungle_cracked.name=Rissige Enargitziegel

View File

@ -719,6 +719,8 @@ fluid.schrabidic_fluid=Schrabidic Acid
fluid.toxic_fluid=Stereotypical Green Ooze
fluid.volcanic_lava_fluid=Volcanic Lava
foundry.noCast=No mold installed!
geiger.chunkRad=Current chunk radiation:
geiger.envRad=Total environmental radiation:
geiger.playerRad=Player contamination:
@ -3622,6 +3624,7 @@ tile.brick_dungeon.name=Berzelianite Bricks
tile.brick_dungeon_circle.name=Berzelianite Cirlce
tile.brick_dungeon_flat.name=Berzelianite Block
tile.brick_dungeon_tile.name=Berzelianite Tile
tile.brick_fire.name=Firebricks
tile.brick_jungle.name=Enargite Bricks
tile.brick_jungle_circle.name=Mechanist's Circle
tile.brick_jungle_cracked.name=Cracked Enargite Bricks