Jump to content

[1.8.9] Creating Side Slabs


blahblahbal

Recommended Posts

Alright, so.... I've been trying to do something that, well, probably all of us have wanted to do at some point. Add side slabs. And... it's not going too well. Currently, I'm getting the error "Cannot set property PropertyEnum{name=dir, clazz=class net.minecraft.util.EnumFacing, values=[down, up, north, south, west, east]} as it does not exist in BlockState{block=null, properties=[variant]}"... but, I've created the property. Here is my code:

 

package blahblahbal.blahmod.blocks;

import java.util.Random;

import blahblahbal.blahmod.Main;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSlab;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public abstract class ModBlockSlab extends BlockSlab {
    /**
     * The property used for the variant.
     * Needed for interactions with ItemSlab.
     */
    public static final PropertyBool VARIANT_PROPERTY = PropertyBool.create("variant");
    public static final PropertyEnum<EnumFacing> DIR = PropertyEnum.<EnumFacing>create("dir", EnumFacing.class);
    /**
     * The unlocalized name.
     */
    private static final String NAME = "stainedBricksSlab";

    /**
     * Hardness value for the material.
     */
    private static final float HARDNESS = 2.0f;

    /**
     * Resistance value for the material.
     */
    private static final float RESISTANCE = 10.0f;

    /**
     * The bit in metadata used by the half property.
     */
    private static final int HALF_META_BIT = 8;

    /**
     * Name - needed for creating the model.
     */
    public String name;
    public abstract Item getHalfSlabReference();
    /**
     * Initializes a new instance of the ModBlockSlab class.
     * @param uname the unlocalized name of this ModBlockSlab
     */
    public ModBlockSlab(String uname, Material m) {
        super(m);
        this.useNeighborBrightness = !this.isDouble();
        setHardness(HARDNESS);
        setResistance(RESISTANCE);
        setStepSound(soundTypePiston);
        this.name = uname;
        setUnlocalizedName(uname);
        if (uname == "sequoiaSlab" || uname == "palmSlab" || uname == "cedarSlab" || uname == "dreadSlab" || uname == "frostSlab")
        {
        	this.setStepSound(soundTypeWood);
        	this.setHarvestLevel("axe", 0);
        }
        if (uname == "dirtSlab" || uname == "grassSlab")
        {
        	this.setStepSound(soundTypeGrass);
        	this.setHarvestLevel("shovel", 0);
        }
        if (uname == "leatherSlab" || uname == "woolSlab")
        {
        	this.setStepSound(soundTypeCloth);
        }
        if (!this.isDouble()) {
            setCreativeTab(Main.blahTabBlock);
        }
        IBlockState blockState = this.createBlockState().getBaseState();
        
        blockState = blockState.withProperty(VARIANT_PROPERTY, false).withProperty(DIR, EnumFacing.NORTH);
        
        if (!this.isDouble() && !this.name.contains("side"))
        {
            blockState = blockState.withProperty(HALF, EnumBlockHalf.BOTTOM);
        }

        setDefaultState(blockState);
    }

    /**
     * Gets the ID for the game registry.
     * @return the unique id for the registry.
     */
    public final String getId() {
        return this.innerGetId(this.isDouble());
    }

    /**
     * Gets the unlocalized name based on metadata/damage.
     * @param metadata block metadata.
     * @return the unlocalized name.
     */
    @Override
    public final String getUnlocalizedName(final int metadata) {
        return this.getUnlocalizedName();
    }

    /**
     * Gets the value of the variant property based on the item.
     * @param itemStack item stack.
     * @return the variant value null.
     */
    @Override
    public final Object getVariant(final ItemStack itemStack) {
        return false;
    }

    /**
     * Gets the variant property.
     * @return the variant property null.
     */
    @Override
    public final IProperty getVariantProperty() {
        return VARIANT_PROPERTY;
    }
    @Override
    public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
    {
    	if (!this.name.contains("side"))
    	{
    		super.setBlockBoundsBasedOnState(worldIn, pos);
    	}
    	else
    	{
    		if (this.isDouble())
            {
                this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
            }
            else
            {
                IBlockState iblockstate = worldIn.getBlockState(pos);

                if (iblockstate.getBlock() == this)
                {
                    if (iblockstate.getValue(DIR) == EnumFacing.NORTH)
                    {
                        this.setBlockBounds(0.5F, 0F, 0F, 1F, 1F, 1F);
                    }
                    else if (iblockstate.getValue(DIR) == EnumFacing.EAST)
                    {
                        this.setBlockBounds(0F, 0F, 0.5F, 1F, 1F, 1F);
                    }
                    else if (iblockstate.getValue(DIR) == EnumFacing.WEST)
                    {
                        this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 0.5F); 
                    }
                    else if (iblockstate.getValue(DIR) == EnumFacing.SOUTH)
                    {
                        this.setBlockBounds(0F, 0F, 0F, 0.5F, 1F, 1F);
                    }
                }
            }
    	}
    }
    @Override
    public void setBlockBoundsForItemRender()
    {
    	if (!this.name.contains("side"))
    	{
    		if (this.isDouble())
            {
                this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
            }
            else
            {
                this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
            }
    	}
    	else
    	{
	        if (this.isDouble())
	        {
	            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
	        }
	        else
	        {
	            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1F, 0.5F);
	        }
    	}
    }
    @Override
    public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
    {
    	if (this.name.contains("side"))
    	{
    		IBlockState iblockstate = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer).withProperty(HALF, BlockSlab.EnumBlockHalf.BOTTOM);
            if (this.isDouble()) return iblockstate;
            else if (facing == EnumFacing.NORTH)
            {
            	return iblockstate.withProperty(DIR, EnumFacing.NORTH);
            }
            else if (facing == EnumFacing.EAST)
            {
            	return iblockstate.withProperty(DIR, EnumFacing.EAST);
            }
            else if (facing == EnumFacing.WEST)
            {
            	return iblockstate.withProperty(DIR, EnumFacing.WEST);
            }
            else if (facing == EnumFacing.SOUTH)
            {
            	return iblockstate.withProperty(DIR, EnumFacing.SOUTH);
            }
    	}
    	IBlockState iblockstate = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer).withProperty(HALF, BlockSlab.EnumBlockHalf.BOTTOM);
    	return this.isDouble() ? iblockstate : (facing != EnumFacing.DOWN && (facing == EnumFacing.UP || (double)hitY <= 0.5D) ? iblockstate : iblockstate.withProperty(HALF, BlockSlab.EnumBlockHalf.TOP));
    }

    /**
     * Gets a block state from metadata.
     * @param meta the metadata or color value.
     * @return a block state with the meta encoded as the variant property.
     */
    @Override
    public final IBlockState getStateFromMeta(final int meta) {
        IBlockState blockState = this.getDefaultState();
        blockState = blockState.withProperty(VARIANT_PROPERTY, false);
        if (!this.isDouble())
        {
        	if (!this.name.contains("side"))
        	{
        		EnumBlockHalf value = EnumBlockHalf.BOTTOM;
                if ((meta & HALF_META_BIT) != 0)
                {
                    value = EnumBlockHalf.TOP;
                }
                blockState = blockState.withProperty(HALF, value);
        	}
        	else
        	{
        		EnumFacing value = EnumFacing.NORTH;
        		if (meta  == 2)
        		{
        			value = EnumFacing.SOUTH;
        		}
        		else if (meta == 3)
        		{
        			value = EnumFacing.WEST;
        		}
        		else if (meta == 4)
        		{
        			value = EnumFacing.EAST;
        		}
        		blockState = blockState.withProperty(DIR, value);
        	}
        }

        return blockState;
    }
    @Override
    public int quantityDropped(Random r)
    {
    	return this.isDouble() ? 2 : 1;
    }
    /**
     * Gets the metadata value from a block state.
     * @param state the block state.
     * @return the metadata or color value.
     */
    @Override
    public final int getMetaFromState(final IBlockState state) {
        if (this.isDouble())
        {
           return 0;
        }
        if (!this.name.contains("side"))
        {
        	if ((EnumBlockHalf)state.getValue(HALF) == EnumBlockHalf.TOP) {
                return HALF_META_BIT;
            }
            else
            {
                return 0;
            }
        }
        else
        {
        	if ((EnumFacing)state.getValue(DIR) == EnumFacing.NORTH)
        	{
        		return 1;
        	}
        	else if ((EnumFacing)state.getValue(DIR) == EnumFacing.SOUTH)
        	{
        		return 2;
        	}
        	else if ((EnumFacing)state.getValue(DIR) == EnumFacing.WEST)
        	{
        		return 3;
        	}
        	else if ((EnumFacing)state.getValue(DIR) == EnumFacing.EAST)
        	{
        		return 4;
        	}
        	return 0;
        }
    }

    /**
     * Gets the damage for the block's item when dropped.
     * @param state the block's state.
     * @return the metadata or color value.
     */
    @Override
    public final int damageDropped(final IBlockState state) {
        return 0;
    }

    /**
     * Gets the item dropped when the block is broken.
     * @param blockState the block's state.
     * @param random the random number generator
     * @param unused an integer.
     * @return the half slab item.
     */
    @Override
    public final Item getItemDropped(final IBlockState blockState, final java.util.Random random, final int unused)
    {
        return this.getHalfSlabReference();
    }
    /**
     * Gets the item dropped when the block is broken.
     * @param world the world
     * @param blockPos the block position.
     * @return the item dropped, the half slab.
     */
    /*@SideOnly(Side.CLIENT)
    @Override
    public final net.minecraft.item.Item getItem(
        final net.minecraft.world.World world,
        final net.minecraft.util.BlockPos blockPos) {
        String blockId = this.innerGetId(this.isDouble());
        if (blockId.substring(0, 7) == "double_")
        {
        	ItemStack i = new ItemStack(GameRegistry.findItem("blahmod", blockId.substring(7)), 2);
        	return i.getItem();
        }
        return GameRegistry.findItem("blahmod", blockId);
    }*/

    /**
     * Creates the block state object.
     * @return the block state with properties defined.
     */
    @Override
    protected final BlockState createBlockState() {
        if (this.isDouble())
        {
            return new BlockState(this, new IProperty[] {VARIANT_PROPERTY});
        }
        else
        {
        	/*if (this.name.contains("side"))
        	{
        		return new BlockState(this, new IProperty[] {VARIANT_PROPERTY, DIR});
        	}*/
        	return new BlockState(this, new IProperty[] {VARIANT_PROPERTY, HALF, DIR});
        }
    }

    /**
     * Gets the ID of the block.
     * @param isDoubleStacked override the isDouble() method.
     * @return the unique block id.
     */
    private String innerGetId(final boolean isDoubleStacked) {
        String result = "";
        if (isDoubleStacked) {
            result = "double_";
        }
        String ID = "";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[0]))
        	ID = "woolSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[1]))
        	ID = "ironSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[2]))
        	ID = "goldSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[3]))
        	ID = "diamondSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[4]))
        	ID = "emeraldSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[5]))
        	ID = "sulphurSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[6]))
        	ID = "limestoneSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs[7]))
        	ID = "uraniumSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[0]))
        	ID = "dirtSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[1]))
        	ID = "grassSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[2]))
        	ID = "leatherSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[3]))
        	ID = "lapisSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[4]))
        	ID = "obsidianSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[5]))
        	ID = "mossSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[6]))
        	ID = "endStoneBrickSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs2[7]))
        	ID = "tadaniteSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[0]))
        	ID = "sequoiaSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[1]))
        	ID = "palmSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[2]))
        	ID = "cedarSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[3]))
        	ID = "petrifiedWoodSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[4]))
        	ID = "dreadSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[5]))
        	ID = "dreadSandSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[6]))
        	ID = "blackSandSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.woodSlabs[7]))
        	ID = "frostSlab";
       	if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs3[0]))
        	ID = "blazeSlab";
        if (Block.getIdFromBlock(this) == Block.getIdFromBlock(ModBlocks.slabs3[1]))
        	ID = "frostBrickSlab";

        return result + ID;
    }
}

 

Don't think that I know what I'm doing, because I don't. Don't criticize me because of that. All I want to know is *why* my code is causing the error I mentioned above, and how to fix it.

 

I know it's possible to do this, because furnaces grab the direction you're facing and swap that when you place them. What I don't know is why it's giving me that error.

 

(Also, the metadata saving/loading is probably wrong, and I'd like help with that if so. But the first priority is fixing the error. Further, I don't need criticisms on me not using metadata for different slab types. I know that this is bad practice, but I likely won't be releasing this mod, especially since this is a practice ground for me. I'll also likely be updating to a later version of Minecraft. I've delayed for so long because of the crap combat system in 1.9+.)

Link to comment
Share on other sites

Okay so now I'm running into a similar problem. It now says "Cannot set property PropertyDirection{name=dir, clazz=class net.minecraft.util.EnumFacing, values=[down, up]} to north on block null, it is not an allowed value." But... why is the block null? I don't understand why or how it could be null.

 

EDIT: I've resorted to extending the Block class for a new ModBlockSideSlab class, and then creating a ModItemBlockSideSlab class, and a ModBlockSideSlabHalf class. No double slab class is needed because that would be pointless.

Edited by blahblahbal
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • It is the field that accesses the portal entrance position relative to the entity. So very much needed to make a portal work. What I don't understand is why the access widener works when running the client in Intellij but doesn't after I publish the jar and try to play with game with it.
    • So I'm using a mod that adds a "god sword" into the game. This sword is unfortunately not enchantable so I'm looking to change it. The only code that seems related is in the weapon's .class file which is here:  public int getItemEnchantability() { return this.tier.m_6601_(); }   The entire file is below: package blackwolf00.elementalswords.common; import blackwolf00.elementalswords.config.ConfigEffects; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import com.mojang.blaze3d.platform.InputConstants; import java.util.List; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.item.TieredItem; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.Vanishable; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ToolAction; import net.minecraftforge.common.ToolActions; public class FusionSword extends TieredItem implements Vanishable { private final float totalDamage; private final Tier tier; private final Multimap<Attribute, AttributeModifier> defaultModifiers; public FusionSword(Tier tierIn, int damage, float speed, Item.Properties builderIn) { super(tierIn, builderIn); this.tier = tierIn; this.totalDamage = damage + this.tier.m_6631_(); ImmutableMultimap.Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder(); builder.put(Attributes.f_22281_, new AttributeModifier(f_41374_, "Weapon modifier", this.totalDamage, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.f_22283_, new AttributeModifier(f_41375_, "Weapon modifier", speed, AttributeModifier.Operation.ADDITION)); this.defaultModifiers = (Multimap<Attribute, AttributeModifier>)builder.build(); } public int getItemEnchantability() { return this.tier.m_6601_(); } public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { return (this.tier.m_6282_().test(repair) || isRepairable(toRepair)); } public float getAttackDamage() { return this.totalDamage; } public boolean m_6777_(BlockState state, Level level, BlockPos pos, Player player) { return !player.m_7500_(); } public float m_8102_(ItemStack stack, BlockState state) { return 1.0F; } public boolean m_7579_(ItemStack stack, LivingEntity target, LivingEntity attacker) { stack.m_41622_(1, attacker, entity -> entity.m_21166_(EquipmentSlot.MAINHAND)); return true; } public boolean m_6813_(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity entityLiving) { if (state.m_60800_((BlockGetter)level, pos) != 0.0F) stack.m_41622_(2, entityLiving, entity -> entity.m_21166_(EquipmentSlot.MAINHAND)); return true; } public boolean m_8096_(BlockState blockIn) { return blockIn.m_60713_(Blocks.f_50033_); } public boolean m_5812_(ItemStack item) { return true; } public Multimap<Attribute, AttributeModifier> m_7167_(EquipmentSlot equipmentSlot) { return (equipmentSlot == EquipmentSlot.MAINHAND) ? this.defaultModifiers : super.m_7167_(equipmentSlot); } public boolean onLeftClickEntity(ItemStack stack, Player player, Entity entity) { return super.onLeftClickEntity(stack, player, entity); } @OnlyIn(Dist.CLIENT) public void m_7373_(ItemStack stack, Level level, List<Component> tooltip, TooltipFlag flag) { super.m_7373_(stack, level, tooltip, flag); if (InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 340)) { tooltip.add(Component.m_237115_("tooltip.fusion_sword").m_130940_(ChatFormatting.GRAY)); } else { tooltip.add(Component.m_237115_("tooltip.hold_shift").m_130940_(ChatFormatting.GRAY)); } } public InteractionResultHolder<ItemStack> m_7203_(Level level, Player playerIn, InteractionHand handIn) { if (((Boolean)ConfigEffects.JUMP_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19603_, 10000, ((Integer)ConfigEffects.JUMP_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.MOVEMENT_SPEED_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19596_, 10000, ((Integer)ConfigEffects.MOVEMENT_SPEED_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.SLOW_FALLING_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19591_, 10000, ((Integer)ConfigEffects.SLOW_FALLING_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.ABSORPTION_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19617_, 10000, ((Integer)ConfigEffects.ABSORPTION_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.DAMAGE_RESISTANCE_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19606_, 10000, ((Integer)ConfigEffects.DAMAGE_RESISTANCE_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.DAMAGE_BOOST_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19600_, 10000, ((Integer)ConfigEffects.DAMAGE_BOOST_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.CONDUIT_POWER_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19592_, 10000, ((Integer)ConfigEffects.CONDUIT_POWER_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.DOLPHINS_GRACE_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19593_, 10000, ((Integer)ConfigEffects.DOLPHINS_GRACE_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.WATER_BREATHING_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19608_, 10000, ((Integer)ConfigEffects.WATER_BREATHING_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.FIRE_RESISTANCE_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19607_, 10000, ((Integer)ConfigEffects.FIRE_RESISTANCE_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.HEALTH_BOOST_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19616_, 10000, ((Integer)ConfigEffects.HEALTH_BOOST_F_LEVEL.get()).intValue() - 1)); if (((Boolean)ConfigEffects.REGENERATION_F.get()).booleanValue()) playerIn.m_7292_(new MobEffectInstance(MobEffects.f_19605_, 10000, ((Integer)ConfigEffects.REGENERATION_F_LEVEL.get()).intValue() - 1)); return InteractionResultHolder.m_19098_(playerIn.m_21120_(handIn)); } public boolean canPerformAction(ItemStack stack, ToolAction toolAction) { return ToolActions.DEFAULT_SWORD_ACTIONS.contains(toolAction); } } How do I make this thing enchantable?  
    • The mod I'm working on is in 1.19.2. The portal works correctly in Intellij but when I publish the jar, put it in the mods folder of the game it crashes with the following error whenever any entity collides with it: java.lang.IllegalAccessError: class com.github.warrentode.turtleblockacademy.blocks.TBAMiningPortalBlock tried to access protected field net.minecraft.world.entity.Entity.f_19819_ (com.github.warrentode.turtleblockacademy.blocks.TBAMiningPortalBlock is in module [email protected] of loader 'TRANSFORMER' @16c5b50a; net.minecraft.world.entity.Entity is in module [email protected] of loader 'TRANSFORMER' @16c5b50a)     at com.github.warrentode.turtleblockacademy.blocks.TBAMiningPortalBlock.m_7892_(TBAMiningPortalBlock.java:124) ~[turtleblockacademy-2024.2025-1.0.0.jar%23572!/:2024.2025-1.0.0] {re:classloading} The thing is, I have Entity.f_19819_ in my accessTransformer.cfg file in this line: public net.minecraft.world.entity.Entity f_19819_ # portalEntrancePos So what do I need to do to fix this error?
    • It will be about medeaival times
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.