92 lines
3.5 KiB
Java
92 lines
3.5 KiB
Java
|
|
package net.paladrill.paladrillmod.block;
|
|
|
|
import net.paladrill.paladrillmod.procedure.ProcedureAngelicWaterMobplayerCollidesBlock;
|
|
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.fml.common.event.FMLPreInitializationEvent;
|
|
import net.minecraftforge.fluids.FluidRegistry;
|
|
import net.minecraftforge.fluids.Fluid;
|
|
import net.minecraftforge.fluids.BlockFluidClassic;
|
|
import net.minecraftforge.client.model.ModelLoader;
|
|
import net.minecraftforge.client.event.ModelRegistryEvent;
|
|
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.item.ItemBlock;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.client.renderer.block.statemap.StateMapperBase;
|
|
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
|
import net.minecraft.client.renderer.block.model.ModelBakery;
|
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
|
import net.minecraft.block.state.IBlockState;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.block.Block;
|
|
|
|
import java.util.Map;
|
|
import java.util.HashMap;
|
|
|
|
@ElementsPaladrillmodMod.ModElement.Tag
|
|
public class BlockAngelicWater extends ElementsPaladrillmodMod.ModElement {
|
|
@GameRegistry.ObjectHolder("paladrillmod:angelicwater")
|
|
public static final Block block = null;
|
|
@GameRegistry.ObjectHolder("paladrillmod:angelicwater")
|
|
public static final Item item = null;
|
|
private Fluid fluid;
|
|
public BlockAngelicWater(ElementsPaladrillmodMod instance) {
|
|
super(instance, 54);
|
|
fluid = new Fluid("angelicwater", new ResourceLocation("paladrillmod:blocks/angelicwater_still"),
|
|
new ResourceLocation("paladrillmod:blocks/angelicwater_flowing")).setLuminosity(0).setDensity(1000).setViscosity(1000)
|
|
.setGaseous(false);
|
|
}
|
|
|
|
@Override
|
|
public void initElements() {
|
|
elements.blocks.add(() -> new BlockFluidClassic(fluid, Material.WATER) {
|
|
@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);
|
|
ProcedureAngelicWaterMobplayerCollidesBlock.executeProcedure($_dependencies);
|
|
}
|
|
}
|
|
}.setUnlocalizedName("angelicwater").setRegistryName("angelicwater"));
|
|
elements.items.add(() -> new ItemBlock(block).setRegistryName("angelicwater"));
|
|
}
|
|
|
|
@Override
|
|
public void preInit(FMLPreInitializationEvent event) {
|
|
FluidRegistry.registerFluid(fluid);
|
|
FluidRegistry.addBucketForFluid(fluid);
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerModels(ModelRegistryEvent event) {
|
|
ModelBakery.registerItemVariants(item);
|
|
ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() {
|
|
@Override
|
|
public ModelResourceLocation getModelLocation(ItemStack stack) {
|
|
return new ModelResourceLocation("paladrillmod:angelicwater", "angelicwater");
|
|
}
|
|
});
|
|
ModelLoader.setCustomStateMapper(block, new StateMapperBase() {
|
|
@Override
|
|
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
|
|
return new ModelResourceLocation("paladrillmod:angelicwater", "angelicwater");
|
|
}
|
|
});
|
|
}
|
|
}
|