mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-11-26 13:18:34 +01:00
start of offering table
This commit is contained in:
parent
6d0a14e3c4
commit
8647425de6
11 changed files with 1451 additions and 7 deletions
|
@ -134,13 +134,7 @@ public class BlockContainerImpl extends BlockContainer implements IModItem, IMod
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if (tile instanceof TileEntityImpl) {
|
if (tile instanceof TileEntityImpl) {
|
||||||
TileEntityImpl impl = (TileEntityImpl) tile;
|
TileEntityImpl impl = (TileEntityImpl) tile;
|
||||||
boolean powered = world.getRedstonePowerFromNeighbors(pos) > 0;
|
impl.isRedstonePowered = world.getRedstonePowerFromNeighbors(pos) > 0;
|
||||||
boolean wasPowered = impl.isRedstonePowered;
|
|
||||||
if (powered && !wasPowered) {
|
|
||||||
impl.isRedstonePowered = true;
|
|
||||||
} else if (!powered && wasPowered) {
|
|
||||||
impl.isRedstonePowered = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.Helper;
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable;
|
||||||
|
import net.minecraft.block.SoundType;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.block.state.BlockFaceShape;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class BlockOfferingTable extends BlockContainerImpl {
|
||||||
|
|
||||||
|
private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(2 / 16F, 0F, 2 / 16F, 14 / 16F, 1F, 14 / 16F);
|
||||||
|
|
||||||
|
public BlockOfferingTable() {
|
||||||
|
super(Material.WOOD, "offering_table", TileEntityOfferingTable.class, "offering_table");
|
||||||
|
this.setSoundType(SoundType.WOOD);
|
||||||
|
this.setHardness(2F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
||||||
|
return Helper.putStackOnTile(playerIn, hand, pos, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
|
||||||
|
return BOUND_BOX;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFullCube(IBlockState state) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOpaqueCube(IBlockState state) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSideSolid(IBlockState baseState, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) {
|
||||||
|
return BlockFaceShape.UNDEFINED;
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,4 +34,5 @@ public final class ModBlocks {
|
||||||
public static final Block FIELD_CREATOR = new BlockFieldCreator();
|
public static final Block FIELD_CREATOR = new BlockFieldCreator();
|
||||||
public static final Block OAK_GENERATOR = new BlockOakGenerator();
|
public static final Block OAK_GENERATOR = new BlockOakGenerator();
|
||||||
public static final Block INFUSED_IRON = new BlockImpl("infused_iron_block", Material.IRON).setSoundType(SoundType.METAL).setHardness(3F);
|
public static final Block INFUSED_IRON = new BlockImpl("infused_iron_block", Material.IRON).setSoundType(SoundType.METAL).setHardness(3F);
|
||||||
|
public static final Block OFFERING_TABLE = new BlockOfferingTable();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks.tiles;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
|
public class TileEntityOfferingTable extends TileEntityImpl {
|
||||||
|
public final ItemStackHandler items = new ItemStackHandlerNA(1, this, true);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeNBT(NBTTagCompound compound, SaveType type) {
|
||||||
|
super.writeNBT(compound, type);
|
||||||
|
if (type != SaveType.BLOCK) {
|
||||||
|
compound.setTag("items", this.items.serializeNBT());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readNBT(NBTTagCompound compound, SaveType type) {
|
||||||
|
super.readNBT(compound, type);
|
||||||
|
if (type != SaveType.BLOCK) {
|
||||||
|
this.items.deserializeNBT(compound.getCompoundTag("items"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemHandlerModifiable getItemHandler(EnumFacing facing) {
|
||||||
|
return this.items;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks.tiles.render;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.Helper;
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable;
|
||||||
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class RenderOfferingTable extends TileEntitySpecialRenderer<TileEntityOfferingTable> {
|
||||||
|
|
||||||
|
private final Random rand = new Random();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(TileEntityOfferingTable tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) {
|
||||||
|
ItemStack stack = tile.items.getStackInSlot(0);
|
||||||
|
if (!stack.isEmpty()) {
|
||||||
|
this.rand.setSeed(Item.getIdFromItem(stack.getItem()) + stack.getMetadata());
|
||||||
|
|
||||||
|
int amount = MathHelper.ceil(stack.getCount() / 8F);
|
||||||
|
for (int i = 0; i < amount; i++) {
|
||||||
|
GlStateManager.pushMatrix();
|
||||||
|
Item item = stack.getItem();
|
||||||
|
|
||||||
|
float scale;
|
||||||
|
float yOff;
|
||||||
|
if (item instanceof ItemBlock && ((ItemBlock) item).getBlock().getRenderLayer() == BlockRenderLayer.SOLID) {
|
||||||
|
scale = 0.4F;
|
||||||
|
yOff = 0.08F;
|
||||||
|
} else {
|
||||||
|
scale = 0.25F;
|
||||||
|
yOff = 0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
GlStateManager.translate(
|
||||||
|
x + 0.35F + this.rand.nextFloat() * 0.3F,
|
||||||
|
y + 0.9F + yOff + (i * 0.001F),
|
||||||
|
z + 0.35F + this.rand.nextFloat() * 0.3F);
|
||||||
|
GlStateManager.rotate(this.rand.nextFloat() * 360F, 0F, 1F, 0F);
|
||||||
|
GlStateManager.rotate(90F, 1F, 0F, 0F);
|
||||||
|
GlStateManager.scale(scale, scale, scale);
|
||||||
|
|
||||||
|
Helper.renderItemInWorld(stack);
|
||||||
|
GlStateManager.popMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,10 @@
|
||||||
package de.ellpeck.naturesaura.proxy;
|
package de.ellpeck.naturesaura.proxy;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar;
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar;
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable;
|
||||||
import de.ellpeck.naturesaura.blocks.tiles.TileEntityWoodStand;
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityWoodStand;
|
||||||
import de.ellpeck.naturesaura.blocks.tiles.render.RenderNatureAltar;
|
import de.ellpeck.naturesaura.blocks.tiles.render.RenderNatureAltar;
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.render.RenderOfferingTable;
|
||||||
import de.ellpeck.naturesaura.blocks.tiles.render.RenderWoodStand;
|
import de.ellpeck.naturesaura.blocks.tiles.render.RenderWoodStand;
|
||||||
import de.ellpeck.naturesaura.events.ClientEvents;
|
import de.ellpeck.naturesaura.events.ClientEvents;
|
||||||
import de.ellpeck.naturesaura.particles.ParticleHandler;
|
import de.ellpeck.naturesaura.particles.ParticleHandler;
|
||||||
|
@ -38,6 +40,7 @@ public class ClientProxy implements IProxy {
|
||||||
public void init(FMLInitializationEvent event) {
|
public void init(FMLInitializationEvent event) {
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodStand.class, new RenderWoodStand());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodStand.class, new RenderWoodStand());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNatureAltar.class, new RenderNatureAltar());
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNatureAltar.class, new RenderNatureAltar());
|
||||||
|
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOfferingTable.class, new RenderOfferingTable());
|
||||||
|
|
||||||
Map<String, RenderPlayer> skinMap = Minecraft.getMinecraft().getRenderManager().getSkinMap();
|
Map<String, RenderPlayer> skinMap = Minecraft.getMinecraft().getRenderManager().getSkinMap();
|
||||||
for (RenderPlayer render : new RenderPlayer[]{skinMap.get("default"), skinMap.get("slim")}) {
|
for (RenderPlayer render : new RenderPlayer[]{skinMap.get("default"), skinMap.get("slim")}) {
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "naturesaura:offering_table",
|
||||||
|
"textures": {
|
||||||
|
"0": "naturesaura:blocks/stripped_oak_log",
|
||||||
|
"1": "naturesaura:blocks/stripped_oak_log_top",
|
||||||
|
"2": "naturesaura:blocks/infused_stone",
|
||||||
|
"particle": "#0"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}]
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,6 +31,7 @@ tile.naturesaura.hopper_upgrade.name=Hopper Enhancement
|
||||||
tile.naturesaura.field_creator.name=Aura Field Creator
|
tile.naturesaura.field_creator.name=Aura Field Creator
|
||||||
tile.naturesaura.oak_generator.name=Canopy Diminisher
|
tile.naturesaura.oak_generator.name=Canopy Diminisher
|
||||||
tile.naturesaura.infused_iron_block.name=Infused Iron Block
|
tile.naturesaura.infused_iron_block.name=Infused Iron Block
|
||||||
|
tile.naturesaura.offering_table.name=Offering Table
|
||||||
|
|
||||||
item.naturesaura.eye.name=Environmental Eye
|
item.naturesaura.eye.name=Environmental Eye
|
||||||
item.naturesaura.gold_fiber.name=Brilliant Fiber
|
item.naturesaura.gold_fiber.name=Brilliant Fiber
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
After Width: | Height: | Size: 397 B |
Binary file not shown.
After Width: | Height: | Size: 395 B |
Loading…
Reference in a new issue