Jump to content

tomatosauce

Members
  • Posts

    17
  • Joined

  • Last visited

tomatosauce's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. The error shows a InaccessibleObjectException exception. The message says unable to make field static final java.lang.invoke.MethodHandles$Lookup java.lang.invoke.MethodHandles$Lookup.IMPL_LOOKUP accessible. If this issue is caused by forge and you don't have any mods installed, maybe try another version of forge.
  2. Hi. I've created a new block using an obj file and forge's obj loader. While there were some issues I managed to fix, I could not find a way to fix this one. The textures of the block on some faces don't show any textures and instead seem to be inverted: I hope these images are clear enough. This occurs only on the triangular side faces. The other sides work fine. I read on this github issue from 1.15.1 that it might be due to inverted vertices on the obj file or some form of culling issue. Since I don't know how to manipulate obj files, I was wondering if this was a common issue to solve. Also, the block does not seem to cast any shadows.
  3. So I managed to make a new block with a .obj file to achieve what I wanted. For the sake of testing, I've added a pyramid-like block. \ However, as expected, the collision box remains as a block. I know how to make make collision boxes by overriding the Block::getShape method when the block in question is quadrilateral but I don't know how when the shape is triangular. As far as I know, the shapes and voxel shape classes only seem to work with quadrilateral shapes. PS: I was unsure with I should have created a new post for this question.
  4. Hi. I am wondering how some mods from previous versions of the game like architecturecraft managed to get passed the 22.5 degree rotation limits for block models. I am pretty sure it isn't possible in the games current state. Where would be a good place to start looking for modifying this?
  5. Thanks! I managed to fix my problem looking at the fence block.
  6. Correct me if I'm wrong. Is ".getStateForPlacement" called to get an appropriate blockstate given some logic when a block is being placed?
  7. Hi, I am trying to register a very simple "Connected Block" block with 4 boolean properties with default state of false for all. On placement, where getStateForPlacement is called, I just want to set the "south_connected" property to true for testing. However, the F3 console displays all 4 properties as true once placed. PS removing the custom implementation of getStateForPlacement returns a block state with all 4 properties as false as expected. public class ConnectedBlock extends Block { public static final BooleanProperty SOUTH_CONNECTED = BooleanProperty.create("south_connected"); public static final BooleanProperty EAST_CONNECTED = BooleanProperty.create("east_connected"); public static final BooleanProperty WEST_CONNECTED = BooleanProperty.create("west_connected"); public static final BooleanProperty NORTH_CONNECTED = BooleanProperty.create("north_connected"); public ConnectedBlock() { super(BlockBehaviour.Properties.of(Material.STONE)); registerDefaultState(stateDefinition.any() .setValue(SOUTH_CONNECTED, false) .setValue(EAST_CONNECTED, false) .setValue(WEST_CONNECTED, false) .setValue(NORTH_CONNECTED, false) ); } @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return getStateDefinition().any().setValue(SOUTH_CONNECTED, true); } @Override protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) { builder.add(SOUTH_CONNECTED, EAST_CONNECTED, WEST_CONNECTED, NORTH_CONNECTED); } } Why is that? Thanks in advanced
  8. Hi, I am trying to make a custom vine block with varying bounding box on placement. Currently, I am using the `getShape()` method from the Block class like so: public class CreepVine extends Block { public CreepVine() { super(BlockBehaviour.Properties.of(Material.REPLACEABLE_PLANT).noCollission().randomTicks().instabreak().sound(SoundType.VINE)); } @Override public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { double width = Utils.getDoubleInRange(4, 12); double height = Utils.getDoubleInRange(4, 12); return Block.box(0.0D, 0.0D, 0.0D, width, 1.0D, height); } } However, every tick, the bounding box alters. What is the best way to make a per block basis BB on placement? Thanks in advance!
  9. I am wondering what the differences are between the two. Also, I noticed that VoxelShape is often present around AxisAlignedBB, what does it actually handle?
  10. I've successful manage to make a jigsaw structure work using the JigsawManager.addPieces() class. It seems to be working fine on worldgen: public class BridgeStructure extends Structure<NoFeatureConfig> { public BridgeStructure() { super(NoFeatureConfig.field_236558_a_); } @Override public IStartFactory<NoFeatureConfig> getStartFactory() { return BridgeStructure.Start::new; } @Override public GenerationStage.Decoration getDecorationStage() { return GenerationStage.Decoration.SURFACE_STRUCTURES; } @Override // can be generated? protected boolean func_230363_a_(ChunkGenerator chunkGenerator, BiomeProvider biomeProvider, long seed, SharedSeedRandom sharedSeedRandom, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos, NoFeatureConfig noFeatureConfig) { return true; } public static class Start extends StructureStart<NoFeatureConfig> { // structureIn chunkX chunkZ mutableBoundingBox referenceIn seedIn // p_i225876_1_ p_i225876_2_ p_i225876_3_ p_i225876_4_ p_i225876_5_ p_i225876_6_ public Start(Structure<NoFeatureConfig> structureIn, int chunkX, int chunkZ, MutableBoundingBox mutableBoundingBox, int referenceIn, long seedIn) { super(structureIn, chunkX, chunkZ, mutableBoundingBox, referenceIn, seedIn); } @Override // generatePieces public void func_230364_a_(DynamicRegistries dynamicRegistries, ChunkGenerator chunkGenerator, TemplateManager templateManager, int chunkX, int chunkZ, Biome biome, NoFeatureConfig noFeatureConfig) { int x = chunkX * 16; int z = chunkZ * 16; BlockPos centerPos = new BlockPos(x, 0, z); // addPieces JigsawManager.func_242837_a( dynamicRegistries, new VillageConfig(() -> dynamicRegistries.getRegistry(Registry.JIGSAW_POOL_KEY).getOrDefault(new ResourceLocation(ModFiddle.MOD_ID, "bridge/bridge_start")), 10), AbstractVillagePiece::new, chunkGenerator, templateManager, centerPos, this.components, this.rand, false, true); int submergedBaseOffset = -6; this.components.forEach(piece -> piece.offset(0, submergedBaseOffset, 0)); this.recalculateStructureSize(); } } } I'm interested in adding some sort of logic when jigsaw pieces are added to the structure, something that I cannot do without somehow overriding (or copying) the class. For example, continuously adding jigsaw pieces so long as there are jigsaw blocks present or generating three consecutive pieces... I'm afraid of doing something horribly stupid here. Should I not be looking into the jigsaw manager at all even? Thank for the help!
  11. There seems to be an issue with the minecolonies mod. More specifically at com.ldtteam.structurize.placement.handlers.placement.PlacementHandlers on the GrassPlacementHandler.canHandle method. As the name suggest, something is trying to access a field DIRT which is none existent. If you're not a modder, maybe look for a patch on this specifically, downgrade or update the mod, or remove it.
×
×
  • Create New...

Important Information

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