Jump to content

MatsCraft1

Members
  • Posts

    40
  • Joined

  • Last visited

Everything posted by MatsCraft1

  1. The log gives information on wich mods were loaded. and only NEI has an "E" in its state so that means it errored. If I remember correctly NEI has a dependency, maybe look for that. Or use Just enough items, I think it's a newer version of NEI.
  2. It would be REALLY helpful to know what's going wrong or what you're even trying
  3. Very strange, as I do not have a solution I will just show you my code, as an example. Items: event.getRegistry().register(new ArmorItem(ModArmorMaterials.copper, EquipmentSlotType.HEAD, new Item.Properties().group(MoreStuff.morestuff_armor.GroupArmor)).setRegistryName("copper_helmet")); event.getRegistry().register(new ArmorItem(ModArmorMaterials.copper, EquipmentSlotType.CHEST, new Item.Properties().group(MoreStuff.morestuff_armor.GroupArmor)).setRegistryName("copper_chestplate")); event.getRegistry().register(new ArmorItem(ModArmorMaterials.copper, EquipmentSlotType.LEGS, new Item.Properties().group(MoreStuff.morestuff_armor.GroupArmor)).setRegistryName("copper_leggings")); event.getRegistry().register(new ArmorItem(ModArmorMaterials.copper, EquipmentSlotType.FEET, new Item.Properties().group(MoreStuff.morestuff_armor.GroupArmor)).setRegistryName("copper_boots")); Materials: public enum ModArmorMaterials implements IArmorMaterial { redtunica("redtunica", 3, new int[]{0, 0, 0, 0}, 5, Items.STRING, "item.armor.equip_leather", 0.0f), bronze("bronze", 14, new int[]{2, 4, 5, 3}, 15, null, "item.armor.equip_gold", 0.5f), copper("copper", 29, new int[]{3, 6, 5, 3}, 10, null, "item.armor.equip_iron", 0.8f); //enum private static final int[] max_damage_array = new int[]{13, 15, 16, 11}; private String name, equipSound; private int durability, enchantibility; private int[] damageReductionAmounts; private Item repairItem; private float toughness; private ModArmorMaterials(String name, int durability, int[] damageReductionAmounts, int enchantibility, Item repairItem, String equipSound, float toughness) { this.name = name; this.equipSound = equipSound; this.durability = durability; this.enchantibility = enchantibility; this.damageReductionAmounts = damageReductionAmounts; this.repairItem = repairItem; this.toughness = toughness; } @Override public int getDurability(EquipmentSlotType slot) { return max_damage_array[slot.getIndex()] * this.durability; } @Override public int getDamageReductionAmount(EquipmentSlotType slot) { return this.damageReductionAmounts[slot.getIndex()]; } @Override public int getEnchantability() { return this.enchantibility; } @Override public SoundEvent getSoundEvent() { return new SoundEvent(new ResourceLocation(equipSound)); } @Override public Ingredient getRepairMaterial() { return Ingredient.fromItems(this.repairItem); } @Override public String getName() { return MoreStuff.MODID + ":" + this.name; } @Override public float getToughness() { return this.toughness; } } you should check everything. I hope this is able to help you
  4. I don't know, but that's what the error says.
  5. Already did that, it told me that it doesn't have type parameters but it needs to implement SurfaceBuilderConfig
  6. So I tried this... @SubscribeEvent public static void onSurfaceRegistry(final RegistryEvent.Register<SurfaceBuilderConfig<SurfaceBuilderConfig>> event) { event.getRegistry().register(new SurfaceBuilderConfig(ModBlocks.MARBLEGRASS.getDefaultState(), ModBlocks.MARBLEDIRT.getDefaultState(), ModBlocks.MARBLEGRAVEL.getDefaultState())); } but it gives me an Error at "SurfaceBuilderConfig<SurfaceBuilderConfig>>, I have no idea what to put there lol. Also how can I use the SurfaceBuilder after registering it?
  7. Here is my code, maybe it can help you. @SubscribeEvent public static void onTileEntityRegistry(final RegistryEvent.Register<TileEntityType<?>> event) { event.getRegistry().register(Builder.create(ContainerBarrelTile::new, ModBlocks.CONTAINEBARRELBLOCK).build(null).setRegistryName("oak_barrel")); }
  8. Okay, I'll try to help you. What commands did you run while installing your workspace / how did you set it up?
  9. I made a peat block that should become wet when near water, just like a farmland block. Somehow this is not working, I also tried increasing the random tick speed. package com.aug15.morestuff.blocks.Misc; import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.block.material.MaterialColor; import net.minecraft.entity.Entity; import net.minecraft.pathfinding.PathType; import net.minecraft.state.IntegerProperty; import net.minecraft.state.StateContainer; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tags.FluidTags; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import java.util.Random; public class PeatBlock extends Block { public static final IntegerProperty MOISTURE = BlockStateProperties.MOISTURE_0_7; protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D); public PeatBlock() { super(Properties.create(Material.EARTH, MaterialColor.DIRT) .sound(SoundType.GROUND) .hardnessAndResistance(4.6f) ); setRegistryName("peat"); this.setDefaultState(this.stateContainer.getBaseState().with(MOISTURE, Integer.valueOf(0))); } @Override public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { if (facing == Direction.UP && !stateIn.isValidPosition(worldIn, currentPos)) { worldIn.getPendingBlockTicks().scheduleTick(currentPos, this, 1); } return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos); } @Override public boolean func_220074_n(BlockState state) { return true; } @Override public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { return SHAPE; } public static void becomeDry(BlockState state, World worldIn, BlockPos pos) { worldIn.setBlockState(pos, nudgeEntitiesWithNewState(state, Blocks.DIRT.getDefaultState(), worldIn, pos)); } private static boolean hasWater(IWorldReader worldIn, BlockPos pos) { for(BlockPos blockpos : BlockPos.getAllInBoxMutable(pos.add(-6, -6, -6), pos.add(6, 6, 6))) { if (worldIn.getFluidState(blockpos).isTagged(FluidTags.WATER)) { return true; } } return net.minecraftforge.common.FarmlandWaterManager.hasBlockWaterTicket(worldIn, pos); } @Override public void tick(BlockState state, World worldIn, BlockPos pos, Random random) { if (!state.isValidPosition(worldIn, pos)) { becomeDry(state, worldIn, pos); } else { int i = state.get(MOISTURE); if (!hasWater(worldIn, pos) && !worldIn.isRainingAt(pos.up())) { if (i > 0) { worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(i - 1)), 2); } } else if (i < 7) { worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(7)), 2); } } } @Override public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { entityIn.setMotion(entityIn.getMotion().mul(0.4D, 1.0D, 0.4D)); } @Override public boolean isNormalCube(BlockState state, IBlockReader worldIn, BlockPos pos) { return true; } protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) { builder.add(MOISTURE); } @Override public boolean allowsMovement(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) { return false; } }
  10. Got it working! I did this: public class ContainerBarrelContainer extends Container { private TileEntity tileEntity; private PlayerEntity playerEntity; private IItemHandler playerInventory; public ContainerBarrelContainer(int windowId, World world, BlockPos pos, PlayerInventory playerInventory, PlayerEntity player) { super(ModBlocks.CONTAINEBARRELCONTAINER, windowId); tileEntity = world.getTileEntity(pos); this.playerEntity = player; this.playerInventory = new InvWrapper(playerInventory); tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).ifPresent(h -> { addSlot(new SlotItemHandler(h, 0, 64, 24)); }); layoutPlayerInventorySlots(10, 70); }
  11. package com.aug15.morestuff.blocks.containers; import com.aug15.morestuff.blocks.ModBlocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IWorldPosCallable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; public class ContainerBarrelContainer extends Container { private TileEntity tileEntity; private PlayerEntity playerEntity; private IItemHandler playerInventory; public ContainerBarrelContainer(int windowId, World world, BlockPos pos, PlayerInventory playerInventory, PlayerEntity player) { super(ModBlocks.CONTAINEBARRELCONTAINER, windowId); TileEntity tileEntity = world.getTileEntity(pos); this.playerEntity = player; this.playerInventory = new InvWrapper(playerInventory); tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).ifPresent(h -> { addSlot(new SlotItemHandler(h, 0, 64, 24)); }); layoutPlayerInventorySlots(10, 70); } private int addSlotRange(IItemHandler handler, int index, int x, int y, int amount, int dx) { for (int i = 0 ; i < amount ; i++) { addSlot(new SlotItemHandler(handler, index, x, y)); x += dx; index++; } return index; } private int addSlotBox(IItemHandler handler, int index, int x, int y, int horAmount, int dx, int verAmount, int dy) { for (int j = 0 ; j < verAmount ; j++) { index = addSlotRange(handler, index, x, y, horAmount, dx); y += dy; } return index; } private void layoutPlayerInventorySlots(int leftCol, int topRow) { // Player inventory addSlotBox(playerInventory, 9, leftCol, topRow, 9, 18, 3, 18); // Hotbar topRow += 58; addSlotRange(playerInventory, 0, leftCol, topRow, 9, 18); } @Override public boolean canInteractWith(PlayerEntity playerIn) { return isWithinUsableDistance(IWorldPosCallable.of(tileEntity.getWorld(), tileEntity.getPos()), playerEntity, ModBlocks.CONTAINEBARRELBLOCK); } } I think I should also mention that the gui shows up for a second
  12. So I updated it. this is the piece of code @Override public boolean canInteractWith(PlayerEntity playerIn) { return isWithinUsableDistance(IWorldPosCallable.of(tileEntity.getWorld(), tileEntity.getPos()), playerEntity, ModBlocks.CONTAINEBARRELBLOCK); }
  13. Oh my god, thank you! That was the problem!
  14. If I did that, how would I make it have its own custom BlockItem?
  15. My block still has the error texture ':)
×
×
  • Create New...

Important Information

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