nosingleplayer 1.1.1: fond custom via blit + log debug widgets
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
|
||||
package net.paladrill.paladrillmod.block;
|
||||
|
||||
import net.paladrill.paladrillmod.procedure.ProcedureSlimePadEntityCollidesInTheBlock;
|
||||
import net.paladrill.paladrillmod.creativetab.TabPalaDrillMod;
|
||||
import net.paladrill.paladrillmod.ElementsPaladrillmodMod;
|
||||
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.BlockRenderLayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemSlab;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.client.renderer.block.model.Variant;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.block.properties.PropertyEnum;
|
||||
import net.minecraft.block.properties.IProperty;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.BlockSlab;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
@ElementsPaladrillmodMod.ModElement.Tag
|
||||
public class BlockSlimePad extends ElementsPaladrillmodMod.ModElement {
|
||||
@GameRegistry.ObjectHolder("paladrillmod:slimepad")
|
||||
public static final Block block = null;
|
||||
@GameRegistry.ObjectHolder("paladrillmod:slimepad_double")
|
||||
public static final Block block_slab_double = null;
|
||||
public BlockSlimePad(ElementsPaladrillmodMod instance) {
|
||||
super(instance, 65);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initElements() {
|
||||
elements.blocks.add(() -> new BlockCustom().setRegistryName("slimepad"));
|
||||
elements.blocks.add(() -> new BlockCustom.Double().setRegistryName("slimepad_double"));
|
||||
elements.items.add(() -> new ItemSlab(block, (BlockSlab) block, (BlockSlab) block_slab_double).setRegistryName(block.getRegistryName()));
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void registerModels(ModelRegistryEvent event) {
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation("paladrillmod:slimepad", "inventory"));
|
||||
}
|
||||
public static class BlockCustom extends BlockSlab {
|
||||
public BlockCustom() {
|
||||
super(Material.SPONGE);
|
||||
setUnlocalizedName("slimepad");
|
||||
setSoundType(SoundType.SLIME);
|
||||
setHarvestLevel("pickaxe", 1);
|
||||
setHardness(1F);
|
||||
setResistance(10F);
|
||||
setLightLevel(0F);
|
||||
setLightOpacity(0);
|
||||
setCreativeTab(TabPalaDrillMod.tab);
|
||||
IBlockState state = this.blockState.getBaseState().withProperty(VARIANT, BlockCustom.Variant.DEFAULT);
|
||||
if (!this.isDouble())
|
||||
state = state.withProperty(BlockSlab.HALF, EnumBlockHalf.BOTTOM);
|
||||
this.setDefaultState(state);
|
||||
this.useNeighborBrightness = !this.isDouble();
|
||||
setTickRandomly(true);
|
||||
}
|
||||
public static final PropertyEnum<BlockCustom.Variant> VARIANT = PropertyEnum.<BlockCustom.Variant>create("variant",
|
||||
BlockCustom.Variant.class);
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return Item.getItemFromBlock(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) {
|
||||
return new ItemStack(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected net.minecraft.block.state.BlockStateContainer createBlockState() {
|
||||
return this.isDouble()
|
||||
? new net.minecraft.block.state.BlockStateContainer(this, new IProperty[]{VARIANT})
|
||||
: new net.minecraft.block.state.BlockStateContainer(this, new IProperty[]{HALF, VARIANT});
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBlockState getStateFromMeta(int meta) {
|
||||
if (this.isDouble()) {
|
||||
return this.getDefaultState();
|
||||
} else {
|
||||
return this.getDefaultState().withProperty(HALF, BlockSlab.EnumBlockHalf.values()[meta % 2]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetaFromState(IBlockState state) {
|
||||
if (this.isDouble()) {
|
||||
return 0;
|
||||
} else {
|
||||
return state.getValue(HALF).ordinal();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName(int meta) {
|
||||
return super.getUnlocalizedName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IProperty<?> getVariantProperty() {
|
||||
return VARIANT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Comparable<?> getTypeForItem(ItemStack stack) {
|
||||
return BlockCustom.Variant.DEFAULT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDouble() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face) {
|
||||
if (isDouble())
|
||||
return true;
|
||||
return super.doesSideBlockRendering(state, world, pos, face);
|
||||
}
|
||||
public enum Variant implements IStringSerializable {
|
||||
DEFAULT;
|
||||
public String getName() {
|
||||
return "default";
|
||||
}
|
||||
}
|
||||
|
||||
public static class Double extends BlockCustom {
|
||||
@Override
|
||||
public boolean isDouble() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public BlockRenderLayer getBlockLayer() {
|
||||
return BlockRenderLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube(IBlockState state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) {
|
||||
super.onEntityCollidedWithBlock(world, pos, state, entity);
|
||||
int x = pos.getX();
|
||||
int y = pos.getY();
|
||||
int z = pos.getZ();
|
||||
{
|
||||
Map<String, Object> $_dependencies = new HashMap<>();
|
||||
$_dependencies.put("entity", entity);
|
||||
$_dependencies.put("x", x);
|
||||
$_dependencies.put("y", y);
|
||||
$_dependencies.put("z", z);
|
||||
ProcedureSlimePadEntityCollidesInTheBlock.executeProcedure($_dependencies);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user