Résolu Problème de méthodes
-
Re-bonjour a tous,
j’ai un autre problème… (et oui, encore une fois…)
Je suis entrain de coder une nouvelle dalle, comme je ne sais pas comment faire j’ai téléchargé le git hub d’un tutoriel de modding sur youtube d’un anglais ( désolé je ne me souvient plus du nom de la chaine ).
Voici mes trois classes :
Classe SlabBase :package fr.luky.feurimod.blocks; import fr.luky.feurimod.ModFeurimod; import fr.luky.feurimod.init.ModBlocks; 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.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import java.util.Random; public class FeurimodSlabBase extends BlockSlab { Block half; public static final PropertyEnum<Variant> VARIANT = PropertyEnum.<Variant>create("variant", Variant.class); public FeurimodSlabBase(String name, Material materialIn, float hardness, float resistance, int harvestLevel, String harvestType) { super(materialIn); setRegistryName(name).setUnlocalizedName(name).setCreativeTab(ModFeurimod.feurimodTab); setHardness(hardness); setResistance(resistance); setHarvestLevel(harvestType, harvestLevel); this.useNeighborBrightness = !this.isDouble(); IBlockState state = this.blockState.getBaseState().withProperty(VARIANT, Variant.DEFAULT); if (!this.isDouble()) state = state.withProperty(HALF, EnumBlockHalf.BOTTOM); setDefaultState(state); this.half = half; ModBlocks.INSTANCE.getBlocks().add(this); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(half); } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(half); } @Override public IBlockState getStateFromMeta(int meta) { IBlockState state = this.blockState.getBaseState().withProperty(VARIANT, Variant.DEFAULT); if (!this.isDouble()) state = state.withProperty(HALF, ((meta&8) != 0) ? EnumBlockHalf.TOP : EnumBlockHalf.BOTTOM); return state; } @Override public int getMetaFromState(IBlockState state) { int meta = 0; if (!this.isDouble() && state.getValue(HALF) == EnumBlockHalf.TOP) meta |= 8; return meta; } @Override protected BlockStateContainer createBlockState() { if (!this.isDouble()) return new BlockStateContainer(this, new IProperty[]{VARIANT, HALF}); else return new BlockStateContainer(this, new IProperty[]{VARIANT}); } @Override public String getUnlocalizedName(int meta) { return super.getUnlocalizedName(); } @Override public IProperty<?> getVariantProperty() { return VARIANT; } @Override public Comparable<?> getTypeForItem(ItemStack stack) { return Variant.DEFAULT; } public static enum Variant implements IStringSerializable { DEFAULT; @Override public String getName() { return "default"; } } }
Classe HalfSlabBase :
package fr.luky.feurimod.blocks; import net.minecraft.block.material.Material; public class FeurimodSlabHalfBase extends FeurimodSlabBase { public FeurimodSlabHalfBase(String name, Material materialIn, float hardness, float resistance, int harvestLevel, String harvestType) { super(name, materialIn, hardness, resistance, harvestLevel, harvestType); } @Override public boolean isDouble() { return true; } }
et enfin ma classe DoubleSlabeBase :
package fr.luky.feurimod.blocks; import net.minecraft.block.material.Material; public class FeurimodSlabDoubleBase extends FeurimodSlabBase { public FeurimodSlabDoubleBase(String name, Material materialIn, float hardness, float resistance, int harvestLevel, String harvestType) { super(name, materialIn, hardness, resistance, harvestLevel, harvestType); } @Override public boolean isDouble() { return true; } }
Mon problème vien de ma classe SlabBase ou l’ide me dit qu’il manque la méthode isDouble().
Comment faire pour résoudre ce problème ??
Merci d’avance, Luky. -
Bonjour !
Ta class
FeurimodSlabBase
est héritée deBlockSlab
qui contient la méthodeabstract boolean isDouble()
mais je ne la vois nulle part dansFeurimodSlabBase
. A mon sens, le problème vient de làBonne soirée !
-
Bonjour @Epharos ,
C’est bien ce que je pensait
Mais du coup je suis obligé de mettre TRUE ou FALSE dans ma classe FeurimodSlabBase…
Que dois-je mettre ??? -
Finalement le problème est résolu : j’avais juste oublié la mention abstract dans Public class FeurimodSlabBase… (il freut le mettre entre public et class)
Merci @Epharos pour votre aide et bonne journée à tous
-
C’était la deuxième possibilité en effet de mettre ta class en abstraite, mais j’étais pas certain de cette façon de faire