Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

DJ1TJOO

Members
  • Joined

  • Last visited

Everything posted by DJ1TJOO

  1. In the docs it says you can make your own recipe condition. The problem is that it say my class have to implements IConditionFactory this class does not exist or I did something wrong. Can someone help me? https://mcforge.readthedocs.io/en/1.14.x/utilities/recipes/#conditional-recipes Github repo: https://github.com/DJ1TJOO/fantasy20/tree/master/src/main/java/nl/fantasynetworkmc/fantasy20
  2. OO you meen Mod.EventBusSubscriber.Bus.FORGE. I thaught it was something totaly different Edit: Or not? Because it doesn't work
  3. What bus does it need to be I made a new class GameEvents and registered it in the Fantasy20 class with MinecraftForge.EVENT_BUS.register(GameEvents.class); Its has the @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) https://github.com/DJ1TJOO/fantasy20/tree/master/src/main/java/nl/fantasynetworkmc/fantasy20 O and also my GuiOpenEvent is not firing on the main screen
  4. I have a capability I want to attach to all players. You do that with the AttachCapabilitiesEvent<Entity> and check if it is a player. My problem is that the event is not called. Did I forget something? Here is a github repo: https://github.com/DJ1TJOO/fantasy20
  5. I think I've found the problem but do not know how to solve it. The AttachCapabilitiesEvent<Entity> is not firing: https://github.com/DJ1TJOO/fantasy20/blob/master/src/main/java/nl/fantasynetworkmc/fantasy20/setup/RegistryEvents.java#L121
  6. playerIn.getCapability(CapabilityResearchProvider.RESEARCH_CAPABILITY, null).ifPresent(r -> {System.err.println("c");}); never works. https://github.com/DJ1TJOO/fantasy20/blob/master/src/main/java/nl/fantasynetworkmc/fantasy20/items/Blueprint.java#L41
  7. Do I need to register it somewhere?
  8. Do I need to implement it in a new class or in my class wich extends my capability interface?
  9. Yeeh but it asks for a capability provider and a resource location both I do not have
  10. How do I attach my capability to the player? https://github.com/DJ1TJOO/fantasy20
  11. Thanks, I didn't know you could use capabilities on enities!
  12. I have a research table and you need to research a couple of recipes before you can craft them. I want to use the PlayerEvent.ItemCraftedEvent to check if a player has learned it. How would I do something like this?
  13. How much blast resistance does my block need so it can not be blown up by the wither?
  14. What is the blast resistance of a wither? (So the wither can't break it)
  15. https://streamable.com/ij84i
  16. https://streamable.com/ij84i
  17. Witch version of forge dit you use? Or is it automatic the same one as I used?
  18. https://github.com/DJ1TJOO/fantasy20 its the normaal minecraft door with Some changes I could not override
  19. It extends this class: Its a door public class DoorLockBlock extends Block { public static final DirectionProperty FACING; public static final BooleanProperty OPEN; public static final EnumProperty<DoorHingeSide> HINGE; public static final EnumProperty<DoubleBlockHalf> HALF; protected static final VoxelShape SOUTH_AABB; protected static final VoxelShape NORTH_AABB; protected static final VoxelShape WEST_AABB; protected static final VoxelShape EAST_AABB; protected DoorLockBlock(final Block.Properties p_i48413_1_) { super(p_i48413_1_); this.setDefaultState((BlockState)((BlockState)((BlockState)((BlockState)((BlockState)((BlockState)this.stateContainer.getBaseState()).with((IProperty)DoorBlock.FACING, (Comparable)Direction.NORTH)).with((IProperty)DoorBlock.OPEN, (Comparable)false)).with((IProperty)DoorBlock.HINGE, (Comparable)DoorHingeSide.LEFT)).with((IProperty)DoorBlock.HALF, (Comparable)DoubleBlockHalf.LOWER))); } public VoxelShape getShape(final BlockState p_220053_1_, final IBlockReader p_220053_2_, final BlockPos p_220053_3_, final ISelectionContext p_220053_4_) { final Direction lvt_5_1_ = (Direction)p_220053_1_.get((IProperty)DoorBlock.FACING); final boolean lvt_6_1_ = !(boolean)p_220053_1_.get((IProperty)DoorBlock.OPEN); final boolean lvt_7_1_ = p_220053_1_.get((IProperty)DoorBlock.HINGE) == DoorHingeSide.RIGHT; switch (DoorLockBlock.DoorBlock$1.field_185789_a[lvt_5_1_.ordinal()]) { default: { return lvt_6_1_ ? DoorLockBlock.EAST_AABB : (lvt_7_1_ ? DoorLockBlock.NORTH_AABB : DoorLockBlock.SOUTH_AABB); } case 2: { return lvt_6_1_ ? DoorLockBlock.SOUTH_AABB : (lvt_7_1_ ? DoorLockBlock.EAST_AABB : DoorLockBlock.WEST_AABB); } case 3: { return lvt_6_1_ ? DoorLockBlock.WEST_AABB : (lvt_7_1_ ? DoorLockBlock.SOUTH_AABB : DoorLockBlock.NORTH_AABB); } case 4: { return lvt_6_1_ ? DoorLockBlock.NORTH_AABB : (lvt_7_1_ ? DoorLockBlock.WEST_AABB : DoorLockBlock.EAST_AABB); } } } @SuppressWarnings("deprecation") public BlockState updatePostPlacement(final BlockState p_196271_1_, final Direction p_196271_2_, final BlockState p_196271_3_, final IWorld p_196271_4_, final BlockPos p_196271_5_, final BlockPos p_196271_6_) { final DoubleBlockHalf lvt_7_1_ = (DoubleBlockHalf)p_196271_1_.get((IProperty)DoorBlock.HALF); if (p_196271_2_.getAxis() == Direction.Axis.Y && lvt_7_1_ == DoubleBlockHalf.LOWER == (p_196271_2_ == Direction.UP)) { if (p_196271_3_.getBlock() == this && p_196271_3_.get((IProperty)DoorBlock.HALF) != lvt_7_1_) { return (BlockState)((BlockState)((BlockState)((BlockState)p_196271_1_.with((IProperty)DoorBlock.FACING, p_196271_3_.get((IProperty)DoorBlock.FACING))).with((IProperty)DoorBlock.OPEN, p_196271_3_.get((IProperty)DoorBlock.OPEN))).with((IProperty)DoorBlock.HINGE, p_196271_3_.get((IProperty)DoorBlock.HINGE))); } return Blocks.AIR.getDefaultState(); } else { if (lvt_7_1_ == DoubleBlockHalf.LOWER && p_196271_2_ == Direction.DOWN && !p_196271_1_.isValidPosition((IWorldReader)p_196271_4_, p_196271_5_)) { return Blocks.AIR.getDefaultState(); } return super.updatePostPlacement(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_); } } public void harvestBlock(final World p_180657_1_, final PlayerEntity p_180657_2_, final BlockPos p_180657_3_, final BlockState p_180657_4_, @Nullable final TileEntity p_180657_5_, final ItemStack p_180657_6_) { super.harvestBlock(p_180657_1_, p_180657_2_, p_180657_3_, Blocks.AIR.getDefaultState(), p_180657_5_, p_180657_6_); } public void onBlockHarvested(final World p_176208_1_, final BlockPos p_176208_2_, final BlockState p_176208_3_, final PlayerEntity p_176208_4_) { final DoubleBlockHalf lvt_5_1_ = (DoubleBlockHalf)p_176208_3_.get((IProperty)DoorBlock.HALF); final BlockPos lvt_6_1_ = (lvt_5_1_ == DoubleBlockHalf.LOWER) ? p_176208_2_.up() : p_176208_2_.down(); final BlockState lvt_7_1_ = p_176208_1_.getBlockState(lvt_6_1_); if (lvt_7_1_.getBlock() == this && lvt_7_1_.get((IProperty)DoorBlock.HALF) != lvt_5_1_) { p_176208_1_.setBlockState(lvt_6_1_, Blocks.AIR.getDefaultState(), 35); p_176208_1_.playEvent(p_176208_4_, 2001, lvt_6_1_, Block.getStateId(lvt_7_1_)); final ItemStack lvt_8_1_ = p_176208_4_.getHeldItemMainhand(); if (!p_176208_1_.isRemote && !p_176208_4_.isCreative()) { Block.spawnDrops(p_176208_3_, p_176208_1_, p_176208_2_, (TileEntity)null, (Entity)p_176208_4_, lvt_8_1_); Block.spawnDrops(lvt_7_1_, p_176208_1_, lvt_6_1_, (TileEntity)null, (Entity)p_176208_4_, lvt_8_1_); } } super.onBlockHarvested(p_176208_1_, p_176208_2_, p_176208_3_, p_176208_4_); } public boolean allowsMovement(final BlockState p_196266_1_, final IBlockReader p_196266_2_, final BlockPos p_196266_3_, final PathType p_196266_4_) { switch (DoorLockBlock.DoorBlock$1.field_210338_b[p_196266_4_.ordinal()]) { case 1: { return (boolean)p_196266_1_.get((IProperty)DoorBlock.OPEN); } case 2: { return false; } case 3: { return (boolean)p_196266_1_.get((IProperty)DoorBlock.OPEN); } default: { return false; } } } private int getCloseSound() { return (this.material == Material.IRON) ? 1011 : 1012; } private int getOpenSound() { return (this.material == Material.IRON) ? 1005 : 1006; } @Nullable public BlockState getStateForPlacement(final BlockItemUseContext p_196258_1_) { final BlockPos lvt_2_1_ = p_196258_1_.getPos(); if (lvt_2_1_.getY() < 255 && p_196258_1_.getWorld().getBlockState(lvt_2_1_.up()).isReplaceable(p_196258_1_)) { return (BlockState)((BlockState)((BlockState)((BlockState)((BlockState)this.getDefaultState().with((IProperty)DoorBlock.FACING, (Comparable)p_196258_1_.getPlacementHorizontalFacing())).with((IProperty)DoorBlock.HINGE, (Comparable)this.getHingeSide(p_196258_1_)).with((IProperty)DoorBlock.OPEN, (Comparable)false)).with((IProperty)DoorBlock.HALF, (Comparable)DoubleBlockHalf.LOWER))); } return null; } public void onBlockPlacedBy(final World p_180633_1_, final BlockPos p_180633_2_, final BlockState p_180633_3_, final LivingEntity p_180633_4_, final ItemStack p_180633_5_) { p_180633_1_.setBlockState(p_180633_2_.up(), (BlockState)p_180633_3_.with((IProperty)DoorBlock.HALF, (Comparable)DoubleBlockHalf.UPPER), 3); } private DoorHingeSide getHingeSide(final BlockItemUseContext p_208073_1_) { final IBlockReader lvt_2_1_ = (IBlockReader)p_208073_1_.getWorld(); final BlockPos lvt_3_1_ = p_208073_1_.getPos(); final Direction lvt_4_1_ = p_208073_1_.getPlacementHorizontalFacing(); final BlockPos lvt_5_1_ = lvt_3_1_.up(); final Direction lvt_6_1_ = lvt_4_1_.rotateYCCW(); final BlockPos lvt_7_1_ = lvt_3_1_.offset(lvt_6_1_); final BlockState lvt_8_1_ = lvt_2_1_.getBlockState(lvt_7_1_); final BlockPos lvt_9_1_ = lvt_5_1_.offset(lvt_6_1_); final BlockState lvt_10_1_ = lvt_2_1_.getBlockState(lvt_9_1_); final Direction lvt_11_1_ = lvt_4_1_.rotateY(); final BlockPos lvt_12_1_ = lvt_3_1_.offset(lvt_11_1_); final BlockState lvt_13_1_ = lvt_2_1_.getBlockState(lvt_12_1_); final BlockPos lvt_14_1_ = lvt_5_1_.offset(lvt_11_1_); final BlockState lvt_15_1_ = lvt_2_1_.getBlockState(lvt_14_1_); final int lvt_16_1_ = (lvt_8_1_.func_224756_o(lvt_2_1_, lvt_7_1_) ? -1 : 0) + (lvt_10_1_.func_224756_o(lvt_2_1_, lvt_9_1_) ? -1 : 0) + (lvt_13_1_.func_224756_o(lvt_2_1_, lvt_12_1_) ? 1 : 0) + (lvt_15_1_.func_224756_o(lvt_2_1_, lvt_14_1_) ? 1 : 0); final boolean lvt_17_1_ = lvt_8_1_.getBlock() == this && lvt_8_1_.get((IProperty)DoorBlock.HALF) == DoubleBlockHalf.LOWER; final boolean lvt_18_1_ = lvt_13_1_.getBlock() == this && lvt_13_1_.get((IProperty)DoorBlock.HALF) == DoubleBlockHalf.LOWER; if ((lvt_17_1_ && !lvt_18_1_) || lvt_16_1_ > 0) { return DoorHingeSide.RIGHT; } if ((lvt_18_1_ && !lvt_17_1_) || lvt_16_1_ < 0) { return DoorHingeSide.LEFT; } final int lvt_19_1_ = lvt_4_1_.getXOffset(); final int lvt_20_1_ = lvt_4_1_.getZOffset(); final Vec3d lvt_21_1_ = p_208073_1_.getHitVec(); final double lvt_22_1_ = lvt_21_1_.x - lvt_3_1_.getX(); final double lvt_24_1_ = lvt_21_1_.z - lvt_3_1_.getZ(); return ((lvt_19_1_ < 0 && lvt_24_1_ < 0.5) || (lvt_19_1_ > 0 && lvt_24_1_ > 0.5) || (lvt_20_1_ < 0 && lvt_22_1_ > 0.5) || (lvt_20_1_ > 0 && lvt_22_1_ < 0.5)) ? DoorHingeSide.RIGHT : DoorHingeSide.LEFT; } public boolean onBlockActivated(BlockState p_220051_1_, final World p_220051_2_, final BlockPos p_220051_3_, final PlayerEntity p_220051_4_, final Hand p_220051_5_, final BlockRayTraceResult p_220051_6_) { if (this.material == Material.IRON) { return false; } p_220051_1_ = (BlockState)p_220051_1_.cycle((IProperty)DoorBlock.OPEN); p_220051_2_.setBlockState(p_220051_3_, p_220051_1_, 10); p_220051_2_.playEvent(p_220051_4_, ((boolean)p_220051_1_.get((IProperty)DoorBlock.OPEN)) ? this.getOpenSound() : this.getCloseSound(), p_220051_3_, 0); return true; } public void toggleDoor(final World p_176512_1_, final BlockPos p_176512_2_, final boolean p_176512_3_) { final BlockState lvt_4_1_ = p_176512_1_.getBlockState(p_176512_2_); if (lvt_4_1_.getBlock() != this || (boolean)lvt_4_1_.get((IProperty)DoorBlock.OPEN) == p_176512_3_) { return; } p_176512_1_.setBlockState(p_176512_2_, (BlockState)lvt_4_1_.with((IProperty)DoorBlock.OPEN, (Comparable)p_176512_3_), 10); this.playSound(p_176512_1_, p_176512_2_, p_176512_3_); } public void neighborChanged(final BlockState p_220069_1_, final World p_220069_2_, final BlockPos p_220069_3_, final Block p_220069_4_, final BlockPos p_220069_5_, final boolean p_220069_6_) { } public boolean isValidPosition(final BlockState p_196260_1_, final IWorldReader p_196260_2_, final BlockPos p_196260_3_) { final BlockPos lvt_4_1_ = p_196260_3_.down(); final BlockState lvt_5_1_ = p_196260_2_.getBlockState(lvt_4_1_); if (p_196260_1_.get((IProperty)DoorBlock.HALF) == DoubleBlockHalf.LOWER) { return lvt_5_1_.func_224755_d((IBlockReader)p_196260_2_, lvt_4_1_, Direction.UP); } return lvt_5_1_.getBlock() == this; } private void playSound(final World p_196426_1_, final BlockPos p_196426_2_, final boolean p_196426_3_) { p_196426_1_.playEvent((PlayerEntity)null, p_196426_3_ ? this.getOpenSound() : this.getCloseSound(), p_196426_2_, 0); } public PushReaction getPushReaction(final BlockState p_149656_1_) { return PushReaction.DESTROY; } public BlockRenderLayer getRenderLayer() { return BlockRenderLayer.CUTOUT; } public BlockState rotate(final BlockState p_185499_1_, final Rotation p_185499_2_) { return (BlockState)p_185499_1_.with((IProperty)DoorBlock.FACING, (Comparable)p_185499_2_.rotate((Direction)p_185499_1_.get((IProperty)DoorBlock.FACING))); } public BlockState mirror(final BlockState p_185471_1_, final Mirror p_185471_2_) { if (p_185471_2_ == Mirror.NONE) { return p_185471_1_; } return (BlockState)p_185471_1_.rotate(p_185471_2_.toRotation((Direction)p_185471_1_.get((IProperty)DoorBlock.FACING))).cycle((IProperty)DoorBlock.HINGE); } @OnlyIn(Dist.CLIENT) public long getPositionRandom(final BlockState p_209900_1_, final BlockPos p_209900_2_) { return MathHelper.getCoordinateRandom(p_209900_2_.getX(), p_209900_2_.down((int)((p_209900_1_.get((IProperty)DoorBlock.HALF) != DoubleBlockHalf.LOWER) ? 1 : 0)).getY(), p_209900_2_.getZ()); } protected void fillStateContainer(final StateContainer.Builder<Block, BlockState> p_206840_1_) { p_206840_1_.add(new IProperty[] { (IProperty)DoorBlock.HALF, (IProperty)DoorBlock.FACING, (IProperty)DoorBlock.OPEN, (IProperty)DoorBlock.HINGE}); } static { FACING = HorizontalBlock.HORIZONTAL_FACING; OPEN = BlockStateProperties.OPEN; HINGE = BlockStateProperties.DOOR_HINGE; HALF = BlockStateProperties.DOUBLE_BLOCK_HALF; SOUTH_AABB = Block.makeCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 3.0); NORTH_AABB = Block.makeCuboidShape(0.0, 0.0, 13.0, 16.0, 16.0, 16.0); WEST_AABB = Block.makeCuboidShape(13.0, 0.0, 0.0, 16.0, 16.0, 16.0); EAST_AABB = Block.makeCuboidShape(0.0, 0.0, 0.0, 3.0, 16.0, 16.0); } static class DoorBlock$1 { private static int[] field_210338_b; private static int[] field_185789_a; static { DoorBlock$1.field_210338_b = new int[PathType.values().length]; try { DoorBlock$1.field_210338_b[PathType.LAND.ordinal()] = 1; } catch (NoSuchFieldError noSuchFieldError) {} try { DoorBlock$1.field_210338_b[PathType.WATER.ordinal()] = 2; } catch (NoSuchFieldError noSuchFieldError2) {} try { DoorBlock$1.field_210338_b[PathType.AIR.ordinal()] = 3; } catch (NoSuchFieldError noSuchFieldError3) {} DoorBlock$1.field_185789_a = new int[Direction.values().length]; try { DoorBlock$1.field_185789_a[Direction.EAST.ordinal()] = 1; } catch (NoSuchFieldError noSuchFieldError4) {} try { DoorBlock$1.field_185789_a[Direction.SOUTH.ordinal()] = 2; } catch (NoSuchFieldError noSuchFieldError5) {} try { DoorBlock$1.field_185789_a[Direction.WEST.ordinal()] = 3; } catch (NoSuchFieldError noSuchFieldError6) {} try { DoorBlock$1.field_185789_a[Direction.NORTH.ordinal()] = 4; } catch (NoSuchFieldError noSuchFieldError7) {} } } }
  20. super(Properties.create(Material.IRON) .sound(SoundType.METAL) .hardnessAndResistance(25.0f, 18000000.0f) .harvestTool(ToolType.PICKAXE) .harvestLevel(3) .lightValue(0));
  21. I have a block and its recistance is set to 18000000 that is the same as bedrock but I can still blow it up with tnt
  22. Thanks! I have another question can I ask it here or should I open a new topic
  23. I want to remove all default recipes on my minecraft forge server. Normally I do that by disableing the vanilla datapack, but when I used forge the recipes didn't go away. So I tried to disable the forge datapack. It said it was disabled but it was not does someone have an idea?

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.