Jump to content

[1.15.2] Tile Entity Rendering Help


MattNL

Recommended Posts

So... I'm attempting to make something that may be a bit excessive.

 

I'm trying to add more skulls to the game. I simply decided to use the existing tile entity in the game... but I'm not sure if this is the right approach. However, that doesn't seem to be the case as both the block and item are registered without an issue... it's only when the game attempts to RENDER it, that it finally crashes. I've tested a little with this by changing the Creeper Head's texture, but nothing changed. I'm not sure if I have to register a new tile entity completely, but if that is the case, I've attempted that already with identical results.

 

So, I guess what I'm trying to do, is replace the TileEntityRenderer for SkullTileEntity.

 

Here is the code that I have so far, and hopefully, someone can show me what I'm doing wrong... (which is probably also the WAY I'm doing it)

 

My TileEntityRenderer (A slightly modified version of Vanilla's SkullTileEntityRenderer):

@OnlyIn(Dist.CLIENT)
public class NewSkullTileEntityRenderer extends TileEntityRenderer<SkullTileEntity> {
	private static final Map<SkullBlock.ISkullType, GenericHeadModel> MODELS = Util.make(Maps.newHashMap(), (p_209262_0_) -> {
		GenericHeadModel genericheadmodel = new GenericHeadModel(0, 0, 64, 32);
		GenericHeadModel genericheadmodel1 = new HumanoidHeadModel();
		DragonHeadModel dragonheadmodel = new DragonHeadModel(0.0F);
		p_209262_0_.put(SkullBlock.Types.SKELETON, genericheadmodel);
		p_209262_0_.put(SkullBlock.Types.WITHER_SKELETON, genericheadmodel);
		p_209262_0_.put(SkullBlock.Types.PLAYER, genericheadmodel1);
		p_209262_0_.put(SkullBlock.Types.ZOMBIE, genericheadmodel1);
		p_209262_0_.put(SkullBlock.Types.CREEPER, genericheadmodel);
		p_209262_0_.put(SkullBlock.Types.DRAGON, dragonheadmodel);
		p_209262_0_.put(NewSkullBlock.Types.STEVE, genericheadmodel1);
		p_209262_0_.put(NewSkullBlock.Types.ALEX, genericheadmodel1);
	});
	private static final Map<SkullBlock.ISkullType, ResourceLocation> SKINS = Util.make(Maps.newHashMap(), (p_209263_0_) -> {
		p_209263_0_.put(SkullBlock.Types.SKELETON, new ResourceLocation("textures/entity/skeleton/skeleton.png"));
		p_209263_0_.put(SkullBlock.Types.WITHER_SKELETON, new ResourceLocation("textures/entity/skeleton/wither_skeleton.png"));
		p_209263_0_.put(SkullBlock.Types.ZOMBIE, new ResourceLocation("textures/entity/zombie/zombie.png"));
		p_209263_0_.put(SkullBlock.Types.CREEPER, new ResourceLocation("textures/entity/creeper/creeper.png"));
		p_209263_0_.put(SkullBlock.Types.DRAGON, new ResourceLocation("textures/entity/enderdragon/dragon.png"));
		p_209263_0_.put(SkullBlock.Types.PLAYER, DefaultPlayerSkin.getDefaultSkinLegacy());
		p_209263_0_.put(NewSkullBlock.Types.STEVE, new ResourceLocation("textures/entity/steve.png"));
		p_209263_0_.put(NewSkullBlock.Types.ALEX, new ResourceLocation("textures/entity/alex.png"));
	});

	public NewSkullTileEntityRenderer(TileEntityRendererDispatcher p_i226015_1_) {
		super(p_i226015_1_);
	}

	public void func_225616_a_(SkullTileEntity p_225616_1_, float p_225616_2_, MatrixStack p_225616_3_, IRenderTypeBuffer p_225616_4_, int p_225616_5_, int p_225616_6_) {
		float f = p_225616_1_.getAnimationProgress(p_225616_2_);
		BlockState blockstate = p_225616_1_.getBlockState();
		boolean flag = blockstate.getBlock() instanceof WallSkullBlock;
		Direction direction = flag ? blockstate.get(WallSkullBlock.FACING) : null;
		float f1 = 22.5F * (float)(flag ? (2 + direction.getHorizontalIndex()) * 4 : blockstate.get(SkullBlock.ROTATION));
		func_228879_a_(direction, f1, ((AbstractSkullBlock)blockstate.getBlock()).getSkullType(), p_225616_1_.getPlayerProfile(), f, p_225616_3_, p_225616_4_, p_225616_5_);
	}

	public static void func_228879_a_(@Nullable Direction p_228879_0_, float p_228879_1_, SkullBlock.ISkullType p_228879_2_, @Nullable GameProfile p_228879_3_, float p_228879_4_, MatrixStack p_228879_5_, IRenderTypeBuffer p_228879_6_, int p_228879_7_) {
		GenericHeadModel genericheadmodel = MODELS.get(p_228879_2_);
		p_228879_5_.func_227860_a_();
		if (p_228879_0_ == null) {
			p_228879_5_.func_227861_a_(0.5D, 0.0D, 0.5D);
		} else {
			switch(p_228879_0_) {
				case NORTH:
					p_228879_5_.func_227861_a_(0.5D, 0.25D, (double)0.74F);
					break;
				case SOUTH:
					p_228879_5_.func_227861_a_(0.5D, 0.25D, (double)0.26F);
					break;
				case WEST:
					p_228879_5_.func_227861_a_((double)0.74F, 0.25D, 0.5D);
					break;
				case EAST:
				default:
					p_228879_5_.func_227861_a_((double)0.26F, 0.25D, 0.5D);
			}
		}

		p_228879_5_.func_227862_a_(-1.0F, -1.0F, 1.0F);
		IVertexBuilder ivertexbuilder = p_228879_6_.getBuffer(func_228878_a_(p_228879_2_, p_228879_3_));
		genericheadmodel.func_225603_a_(p_228879_4_, p_228879_1_, 0.0F);
		genericheadmodel.func_225598_a_(p_228879_5_, ivertexbuilder, p_228879_7_, OverlayTexture.field_229196_a_, 1.0F, 1.0F, 1.0F, 1.0F);
		p_228879_5_.func_227865_b_();
	}

	private static RenderType func_228878_a_(SkullBlock.ISkullType p_228878_0_, @Nullable GameProfile p_228878_1_) {
		ResourceLocation resourcelocation = SKINS.get(p_228878_0_);
		if (p_228878_0_ == SkullBlock.Types.PLAYER && p_228878_1_ != null) {
			Minecraft minecraft = Minecraft.getInstance();
			Map<Type, MinecraftProfileTexture> map = minecraft.getSkinManager().loadSkinFromCache(p_228878_1_);
			return map.containsKey(Type.SKIN) ? RenderType.func_228644_e_(minecraft.getSkinManager().loadSkin(map.get(Type.SKIN), Type.SKIN)) : RenderType.func_228640_c_(DefaultPlayerSkin.getDefaultSkin(PlayerEntity.getUUID(p_228878_1_)));
		} else {
			return RenderType.func_228640_c_(resourcelocation);
		}
	}
}

 

My Registry:

	  @SubscribeEvent
	  public void init(FMLClientSetupEvent event)
	  {
		  ClientRegistry.bindTileEntityRenderer(TileEntityType.Builder.create(SkullTileEntity::new,
			  ModBlocks.steve_head,
			  ModBlocks.steve_head_wall,
			  ModBlocks.alex_head,
			  ModBlocks.alex_head_wall
		  ).build(null), NewSkullTileEntityRenderer::new);
	  }

 

My NewSkullBlock (Since SkullBlock is Private):

public class NewSkullBlock extends SkullBlock {
	public static final IntegerProperty ROTATION = BlockStateProperties.ROTATION_0_15;
	protected static final VoxelShape SHAPE = Block.makeCuboidShape(4.0D, 0.0D, 4.0D, 12.0D, 8.0D, 12.0D);

	public NewSkullBlock(SkullBlock.ISkullType type, Block.Properties properties) {
		super(type, properties);
		this.setDefaultState(this.stateContainer.getBaseState().with(ROTATION, Integer.valueOf(0)));
	}

	public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
		return SHAPE;
	}

	public VoxelShape getRenderShape(BlockState state, IBlockReader worldIn, BlockPos pos) {
		return VoxelShapes.empty();
	}

	public BlockState getStateForPlacement(BlockItemUseContext context) {
		return this.getDefaultState().with(ROTATION, Integer.valueOf(MathHelper.floor((double)(context.getPlacementYaw() * 16.0F / 360.0F) + 0.5D) & 15));
	}

	public BlockState rotate(BlockState state, Rotation rot) {
		return state.with(ROTATION, Integer.valueOf(rot.rotate(state.get(ROTATION), 16)));
	}

	public BlockState mirror(BlockState state, Mirror mirrorIn) {
		return state.with(ROTATION, Integer.valueOf(mirrorIn.mirrorRotation(state.get(ROTATION), 16)));
	}

	protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
		builder.add(ROTATION);
	}

	public interface ISkullType {
	}

	public static enum Types implements SkullBlock.ISkullType {
		STEVE,
		ALEX;
	}
}

 

My (WallSkullBlock is also private) NewWallSkullBlock:

public class NewWallSkullBlock extends WallSkullBlock {
	public static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING;
	private static final Map<Direction, VoxelShape> SHAPES = Maps.newEnumMap(ImmutableMap.of(Direction.NORTH, Block.makeCuboidShape(4.0D, 4.0D, 8.0D, 12.0D, 12.0D, 16.0D), Direction.SOUTH, Block.makeCuboidShape(4.0D, 4.0D, 0.0D, 12.0D, 12.0D, 8.0D), Direction.EAST, Block.makeCuboidShape(0.0D, 4.0D, 4.0D, 8.0D, 12.0D, 12.0D), Direction.WEST, Block.makeCuboidShape(8.0D, 4.0D, 4.0D, 16.0D, 12.0D, 12.0D)));

	public NewWallSkullBlock(SkullBlock.ISkullType type, Block.Properties properties) {
		super(type, properties);
		this.setDefaultState(this.stateContainer.getBaseState().with(FACING, Direction.NORTH));
	}

	public String getTranslationKey() {
		return this.asItem().getTranslationKey();
	}

	public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
		return SHAPES.get(state.get(FACING));
	}

	public BlockState getStateForPlacement(BlockItemUseContext context) {
		BlockState blockstate = this.getDefaultState();
		IBlockReader iblockreader = context.getWorld();
		BlockPos blockpos = context.getPos();
		Direction[] adirection = context.getNearestLookingDirections();

		for(Direction direction : adirection) {
			if (direction.getAxis().isHorizontal()) {
				Direction direction1 = direction.getOpposite();
				blockstate = blockstate.with(FACING, direction1);
				if (!iblockreader.getBlockState(blockpos.offset(direction)).isReplaceable(context)) {
					return blockstate;
				}
			}
		}

		return null;
	}

	public BlockState rotate(BlockState state, Rotation rot) {
		return state.with(FACING, rot.rotate(state.get(FACING)));
	}

	public BlockState mirror(BlockState state, Mirror mirrorIn) {
		return state.rotate(mirrorIn.toRotation(state.get(FACING)));
	}

	protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
		builder.add(FACING);
	}
}

 

My Item Registry:

new SkullItem(ModBlocks.steve_head, ModBlocks.steve_head_wall, (new Item.Properties()).group(ItemGroup.DECORATIONS).rarity(Rarity.UNCOMMON)).setRegistryName("[NAMESPACE HERE]","steve_head"),
new SkullItem(ModBlocks.alex_head, ModBlocks.alex_head_wall, (new Item.Properties()).group(ItemGroup.DECORATIONS).rarity(Rarity.UNCOMMON)).setRegistryName("[NAMESPACE HERE]","alex_head"),

 

My Block Registry:

steve_head = registerBlock(new NewSkullBlock(NewSkullBlock.Types.STEVE, Block.Properties.create(Material.MISCELLANEOUS).hardnessAndResistance(1.0F)),"[NAMESPACE HERE]","steve_head");
steve_head_wall = registerBlock(new NewWallSkullBlock(NewSkullBlock.Types.STEVE, Block.Properties.create(Material.MISCELLANEOUS).hardnessAndResistance(1.0F)),"[NAMESPACE HERE]","wall_steve_head");
alex_head = registerBlock(new NewSkullBlock(NewSkullBlock.Types.ALEX, Block.Properties.create(Material.MISCELLANEOUS).hardnessAndResistance(1.0F)),"[NAMESPACE HERE]","alex_head");
alex_head_wall = registerBlock(new NewWallSkullBlock(NewSkullBlock.Types.ALEX, Block.Properties.create(Material.MISCELLANEOUS).hardnessAndResistance(1.0F)),"[NAMESPACE HERE]","wall_alex_head");

 

Sorry for the huge amount of code, but I honestly don't know what's wrong here.

Thanks in advance!

Edited by MattNL
Updated code
Link to comment
Share on other sites

  • 1 month later...

For starters this: 

.setRegistryName("[NAMESPACE HERE]","steve_head")

 won't work, everything has to be lowercase (and the namespace should be your modid).

 

Secondly, 

On 2/10/2020 at 11:27 PM, MattNL said:

it's only when the game attempts to RENDER it, that it finally crashes.

What is the error? Show us your log file.

Link to comment
Share on other sites

 

On 3/24/2020 at 8:23 AM, Alpvax said:

For starters this: 


.setRegistryName("[NAMESPACE HERE]","steve_head")

 won't work, everything has to be lowercase (and the namespace should be your modid).

I tend to censor my namespaces. It's just something that I do. (The namespace is a proper lowercase modid)

Second, I should have posted the crash log before, and that's my bad.

 

---- Minecraft Crash Report ----
// Shall we play a game?

Time: 3/25/20 5:30 PM
Description: Rendering item

java.lang.NullPointerException: Rendering item
	at java.util.Objects.requireNonNull(Objects.java:203) ~[?:1.8.0_201] {}
	at java.util.Optional.<init>(Optional.java:96) ~[?:1.8.0_201] {}
	at java.util.Optional.of(Optional.java:108) ~[?:1.8.0_201] {}
	at net.minecraft.client.renderer.RenderState$TextureState.<init>(SourceFile:192) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.RenderType.func_230167_a_(SourceFile:116) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.RenderType.func_228640_c_(SourceFile:130) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228878_a_(SourceFile:105) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228879_a_(SourceFile:95) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer.func_228364_a_(SourceFile:81) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.func_229111_a_(ItemRenderer.java:108) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.renderItemModelIntoGUI(ItemRenderer.java:190) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.renderItemAndEffectIntoGUI(ItemRenderer.java:211) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.drawSlot(ContainerScreen.java:220) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.render(ContainerScreen.java:91) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.DisplayEffectsScreen.render(DisplayEffectsScreen.java:45) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.CreativeScreen.render(CreativeScreen.java:605) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:359) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading}
	at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:480) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:925) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.run(Minecraft.java:554) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(SourceFile:204) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201] {}
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201] {}
	at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102) [forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at java.util.Objects.requireNonNull(Objects.java:203)
	at java.util.Optional.<init>(Optional.java:96)
	at java.util.Optional.of(Optional.java:108)
	at net.minecraft.client.renderer.RenderState$TextureState.<init>(SourceFile:192)
	at net.minecraft.client.renderer.RenderType.func_230167_a_(SourceFile:116)
	at net.minecraft.client.renderer.RenderType.func_228640_c_(SourceFile:130)
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228878_a_(SourceFile:105)
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228879_a_(SourceFile:95)
	at net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer.func_228364_a_(SourceFile:81)
	at net.minecraft.client.renderer.ItemRenderer.func_229111_a_(ItemRenderer.java:108)
	at net.minecraft.client.renderer.ItemRenderer.renderItemModelIntoGUI(ItemRenderer.java:190)

-- Item being rendered --
Details:
	Item Type: steve_head
	Registry Name: namespace_here:steve_head
	Item Damage: 0
	Item NBT: null
	Item Foil: false
Stacktrace:
	at net.minecraft.client.renderer.ItemRenderer.renderItemAndEffectIntoGUI(ItemRenderer.java:211)
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.drawSlot(ContainerScreen.java:220)
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.render(ContainerScreen.java:91)
	at net.minecraft.client.gui.DisplayEffectsScreen.render(DisplayEffectsScreen.java:45)
	at net.minecraft.client.gui.screen.inventory.CreativeScreen.render(CreativeScreen.java:605)
	at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:359)

-- Screen render details --
Details:
	Screen name: net.minecraft.client.gui.screen.inventory.CreativeScreen
	Mouse location: Scaled: (280, 154). Absolute: (561.000000, 308.000000)
	Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2.000000

-- Affected level --
Details:
	All players: 1 total; [ClientPlayerEntity['MattNL'/15, l='MpServer', x=-366.95, y=95.00, z=83.23]]
	Chunk stats: Client Chunk Cache: 841, 187
	Level dimension: DimensionType{minecraft:overworld}
	Level name: MpServer
	Level seed: -1113229301927640182
	Level generator: ID 00 - default, ver 1. Features enabled: false
	Level generator options: {}
	Level spawn location: World: (112,75,-192), Chunk: (at 0,4,0 in 7,-12; contains blocks 112,0,-192 to 127,255,-177), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
	Level time: 194158 game time, 36310 day time
	Known server brands: 
	Level was modded: false
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
	Server brand: forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.world.ClientWorld.fillCrashReport(ClientWorld.java:442)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:1764)
	at net.minecraft.client.Minecraft.run(Minecraft.java:568)
	at net.minecraft.client.main.Main.main(SourceFile:204)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55)
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37)
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54)
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72)
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:81)
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:65)
	at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102)

-- System Details --
Details:
	Minecraft Version: 1.15.2
	Minecraft Version ID: 1.15.2
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_201, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 300534696 bytes (286 MB) / 1183842304 bytes (1129 MB) up to 1873805312 bytes (1787 MB)
	CPUs: 8
	JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
	ModLauncher: 5.0.0-milestone.4+67+b1a340b
	ModLauncher launch target: fmluserdevclient
	ModLauncher naming: mcp
	ModLauncher services: 
		/eventbus-2.0.0-milestone.1-service.jar eventbus PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar object_holder_definalize PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtime_enum_extender PLUGINSERVICE 
		/accesstransformers-2.0.0-milestone.1-shadowed.jar accesstransformer PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar capability_inject_definalize PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtimedistcleaner PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar fml TRANSFORMATIONSERVICE 
	FML: 31.1
	Forge: net.minecraftforge:31.1.0
	FML Language Providers: 
		javafml@31.1
		minecraft@1
	Mod List: 
		client-extra.jar Minecraft {minecraft@1.15.2 DONE}
		main Minecraft: namespace_here {namespace_here@NONE DONE}
		forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar Forge {forge@31.1.0 DONE}
	Launched Version: MOD_DEV
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: Intel(R) UHD Graphics 630 GL version 4.5.0 - Build 23.20.16.5018, Intel
	GL Caps: Using framebuffer using OpenGL 3.0
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'forge'
	Type: Client (map_client.txt)
	Resource Packs: vanilla, mod_resources, programer_art
	Current Language: English (US)
	CPU: 8x Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz

 

Sorry for the lack of detail, before. Thanks, in advance.

Link to comment
Share on other sites

If it helps, these are the item models...

 

Items (Identical to all other skulls in Vanilla):

{
    "parent": "item/template_skull"
}

 

Template Skull (Vanilla):

{
    "parent": "builtin/entity",
    "textures": {
        "particle": "block/soul_sand"
    },
    "display": {
        "gui": {
            "rotation": [ 30, 45, 0 ],
            "translation": [ 0, 3, 0 ],
            "scale": [ 1, 1, 1 ]
        },
        "fixed": {
            "rotation": [ 0, 180, 0 ],
            "translation": [ 0, 4, 0],
            "scale":[ 1, 1, 1 ]
        },
        "ground": {
            "rotation": [ 0, 0, 0 ],
            "translation": [ 0, 3, 0 ],
            "scale": [ 0.5, 0.5, 0.5 ]
        },
        "thirdperson_righthand": {
            "rotation": [ 45, 45, 0 ],
            "translation": [ 0, 3, 0 ],
            "scale": [ 0.5, 0.5, 0.5 ]
        }
    }
}

 

Edited by MattNL
Link to comment
Share on other sites

Howdy

 

This part here

	at java.util.Objects.requireNonNull(Objects.java:203)
	at java.util.Optional.<init>(Optional.java:96)
	at java.util.Optional.of(Optional.java:108)
	at net.minecraft.client.renderer.RenderState$TextureState.<init>(SourceFile:192)

tells me that you are trying to initialise your Renderer with a texture ResourceLocation that is null, i.e. hasn't been set properly.

 

Looking at your code, I suspect this:

p_209263_0_.put(SkullBlock.Types.PLAYER, DefaultPlayerSkin.getDefaultSkinLegacy());

 

I would suggest you put a breakpoint in a suitable location and have a look at what the ResourceLocation has been set to.

eg in the put statement above, or in SkullEntityTileRenderer::func_228879_a_

 

Cheers

  TGG

 

 

 

 

 

 

 

 

Link to comment
Share on other sites

I've replaced the function with a texture path instead, but I still got the RenderState$TextureState crash. Perhaps the renderer isn't being registered?

 

---- Minecraft Crash Report ----
// Don't do that.

Time: 3/25/20 6:57 PM
Description: Rendering item

java.lang.NullPointerException: Rendering item
	at java.util.Objects.requireNonNull(Objects.java:203) ~[?:1.8.0_201] {}
	at java.util.Optional.<init>(Optional.java:96) ~[?:1.8.0_201] {}
	at java.util.Optional.of(Optional.java:108) ~[?:1.8.0_201] {}
	at net.minecraft.client.renderer.RenderState$TextureState.<init>(SourceFile:192) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.RenderType.func_230167_a_(SourceFile:116) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.RenderType.func_228640_c_(SourceFile:130) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228878_a_(SourceFile:105) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228879_a_(SourceFile:95) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer.func_228364_a_(SourceFile:81) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.func_229111_a_(ItemRenderer.java:108) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.renderItemModelIntoGUI(ItemRenderer.java:190) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.renderer.ItemRenderer.renderItemAndEffectIntoGUI(ItemRenderer.java:211) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.drawSlot(ContainerScreen.java:220) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.render(ContainerScreen.java:91) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.DisplayEffectsScreen.render(DisplayEffectsScreen.java:45) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.client.gui.screen.inventory.CreativeScreen.render(CreativeScreen.java:605) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:359) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading}
	at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:480) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:925) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.run(Minecraft.java:554) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(SourceFile:204) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {re:classloading,pl:runtimedistcleaner:A}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201] {}
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201] {}
	at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-5.0.0-milestone.4.jar:?] {}
	at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102) [forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar:?] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at java.util.Objects.requireNonNull(Objects.java:203)
	at java.util.Optional.<init>(Optional.java:96)
	at java.util.Optional.of(Optional.java:108)
	at net.minecraft.client.renderer.RenderState$TextureState.<init>(SourceFile:192)
	at net.minecraft.client.renderer.RenderType.func_230167_a_(SourceFile:116)
	at net.minecraft.client.renderer.RenderType.func_228640_c_(SourceFile:130)
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228878_a_(SourceFile:105)
	at net.minecraft.client.renderer.tileentity.SkullTileEntityRenderer.func_228879_a_(SourceFile:95)
	at net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer.func_228364_a_(SourceFile:81)
	at net.minecraft.client.renderer.ItemRenderer.func_229111_a_(ItemRenderer.java:108)
	at net.minecraft.client.renderer.ItemRenderer.renderItemModelIntoGUI(ItemRenderer.java:190)

-- Item being rendered --
Details:
	Item Type: steve_head
	Registry Name: namespace_here:steve_head
	Item Damage: 0
	Item NBT: null
	Item Foil: false
Stacktrace:
	at net.minecraft.client.renderer.ItemRenderer.renderItemAndEffectIntoGUI(ItemRenderer.java:211)
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.drawSlot(ContainerScreen.java:220)
	at net.minecraft.client.gui.screen.inventory.ContainerScreen.render(ContainerScreen.java:91)
	at net.minecraft.client.gui.DisplayEffectsScreen.render(DisplayEffectsScreen.java:45)
	at net.minecraft.client.gui.screen.inventory.CreativeScreen.render(CreativeScreen.java:605)
	at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:359)

-- Screen render details --
Details:
	Screen name: net.minecraft.client.gui.screen.inventory.CreativeScreen
	Mouse location: Scaled: (311, 179). Absolute: (1246.000000, 715.000000)
	Screen size: Scaled: (480, 251). Absolute: (1920, 1001). Scale factor of 4.000000

-- Affected level --
Details:
	All players: 1 total; [ClientPlayerEntity['MattNL'/14, l='MpServer', x=-376.70, y=68.00, z=-114.70]]
	Chunk stats: Client Chunk Cache: 841, 575
	Level dimension: DimensionType{minecraft:overworld}
	Level name: MpServer
	Level seed: -1113229301927640182
	Level generator: ID 00 - default, ver 1. Features enabled: false
	Level generator options: {}
	Level spawn location: World: (112,75,-192), Chunk: (at 0,4,0 in 7,-12; contains blocks 112,0,-192 to 127,255,-177), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
	Level time: 201942 game time, 44094 day time
	Known server brands: 
	Level was modded: false
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Server brand: forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.world.ClientWorld.fillCrashReport(ClientWorld.java:442)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:1764)
	at net.minecraft.client.Minecraft.run(Minecraft.java:568)
	at net.minecraft.client.main.Main.main(SourceFile:204)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55)
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37)
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54)
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72)
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:81)
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:65)
	at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102)

-- System Details --
Details:
	Minecraft Version: 1.15.2
	Minecraft Version ID: 1.15.2
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_201, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 453994992 bytes (432 MB) / 950534144 bytes (906 MB) up to 1873805312 bytes (1787 MB)
	CPUs: 8
	JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
	ModLauncher: 5.0.0-milestone.4+67+b1a340b
	ModLauncher launch target: fmluserdevclient
	ModLauncher naming: mcp
	ModLauncher services: 
		/eventbus-2.0.0-milestone.1-service.jar eventbus PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar object_holder_definalize PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtime_enum_extender PLUGINSERVICE 
		/accesstransformers-2.0.0-milestone.1-shadowed.jar accesstransformer PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar capability_inject_definalize PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtimedistcleaner PLUGINSERVICE 
		/forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar fml TRANSFORMATIONSERVICE 
	FML: 31.1
	Forge: net.minecraftforge:31.1.0
	FML Language Providers: 
		javafml@31.1
		minecraft@1
	Mod List: 
		client-extra.jar Minecraft {minecraft@1.15.2 DONE}
		main Minecraft: namespace_here {namespace_here@NONE DONE}
		forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3.jar Forge {forge@31.1.0 DONE}
	Launched Version: MOD_DEV
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: Intel(R) UHD Graphics 630 GL version 4.5.0 - Build 23.20.16.5018, Intel
	GL Caps: Using framebuffer using OpenGL 3.0
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'forge'
	Type: Client (map_client.txt)
	Resource Packs: vanilla, mod_resources, programer_art
	Current Language: English (US)
	CPU: 8x Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz

 

Edited by MattNL
Link to comment
Share on other sites

  • 1 year later...

So, after tons of rage quitting and a short 2-day break, I figured out what was wrong.
I had the exact same issue and here's the solution for anyone who needs it in the future:

Edit: Yeah, no. My old method isn't correct at all (Thanks to diesieben07 for the help). Just add the code below and it should be fine. You can also change "new GenericHeadModel(0, 0, 32, 32)" to a custom model or you can change the last 2 values to modify the texture size.

	@SubscribeEvent
    public static void registerCustomSkullRenderers(final FMLClientSetupEvent event) {
        Field ModelField;
        Field SkinField;
        try {
            ModelField = SkullTileEntityRenderer.class.getDeclaredField("MODEL_BY_TYPE");
            ModelField.setAccessible(true);
            Map<SkullBlock.ISkullType, GenericHeadModel> Model = (Map<SkullBlock.ISkullType, GenericHeadModel>) ModelField.get(SkullTileEntityRenderer.class);
            Model.put(<Insert Custom Skull Type>, new GenericHeadModel(0, 0, 32, 32));

            SkinField = SkullTileEntityRenderer.class.getDeclaredField("SKIN_BY_TYPE");
            SkinField.setAccessible(true);
            Map<SkullBlock.ISkullType, ResourceLocation> Skin = (Map<SkullBlock.ISkullType, ResourceLocation>) SkinField.get(SkullTileEntityRenderer.class);
            Skin.put(<Insert Custom Skull Type>, new ResourceLocation("<Mod ID>:<Texture Location>"));
        }
        catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }


Basically, you have to register a custom item renderer. Let's say the block and the tile entities were done properly (Too lazy to check) and the item (more exactly the texture) was the issue.
All you need to do is add the following two methods to your main project class:

 

public static Item.Properties setupISTER(Item.Properties group) {
	return group.setISTER(MainClass::getISTER);
}

@OnlyIn(Dist.CLIENT)
public static Callable<ItemStackTileEntityRenderer> getISTER() {
	return ItemRenderer::new;
}

and after that you need to add this to your block item:
 

MainClass.setupISTER(new Item.Properties())

Item.Properties() is of course your item properties like tab, rarity and etc.

Then finally you're gonna need your Item Renderer class which should be something similar to this:

 

@OnlyIn(Dist.CLIENT)
public class ItemRenderer extends ItemStackTileEntityRenderer {
    public static final ItemStackTileEntityRenderer instance = new PA_ItemRenderer();

    @Override
    public void renderByItem(ItemStack stack, ItemCameraTransforms.TransformType transform, MatrixStack matrix, IRenderTypeBuffer renderer, int light, int overlay) {
        Item item = stack.getItem();
        if (item instanceof BlockItem) {
            Block block = ((BlockItem) item).getBlock();
            if (block instanceof AbstractSkullBlock) {
                PA_SkullRenderer.renderSkull(null, 180.0F, ((AbstractSkullBlock) block).getType(), null, 0.0F, matrix, renderer, light);
            }
        }
    }
}

The renderer is a slightly modified version of the vanilla one and all the code was made on 1.16.5.

Edited by uSkizzik
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

    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI Prediksi HK merupakan salah satu metode meracik angka yang sangat dibutuhkan para pecinta togel Hongkong untuk mendapatkan angka jitu. Prediksi Hongkong akan memberikan anda racikan yang sudah dibuat oleh para master angka togel dan akan dibagikan melalui situs Prediksi HK ini. Namun sebelum itu kami menegaskan yang namanya prediksi tidak ada yang sempurna, karena yang sempurna hanya milik Tuhan saja. Kami juga tidak mengatakan bahwa prediksi yang kami berikan itu asal dan tidak berdasar. Kami memberikan Bocoran HK malam ini pastinya melalui berbagai macam rumus dan dibantu oleh peracik angka togel handal. Jadi anda tidak ada salahnya juga jika menggunakan Prediksi Bocoran Togel Hongkong yang akan kami berikan disitus ini. Selaku situs Prediksi Hongkong jitu malam ini, kami juga memberikan saran kepada anda jika ingin mencari prediksi togel HK yang bagus jangan asal memilih. Karena banyak situs palsu yang tersebar di internet dan hanya memberikan angka prediksi Hk asal dan tidak berdasar. Maka kami sarankan anda bisa menggunakan Bocoran Togel Hongkong di situs kami ini sebagai acuan memilih angka yang ingin dipasang. Bocoran HK Paling Jitu Malam Ini Bocoran Hk Malam Ini tentu saja sangat membantu untuk para member yang kesulitan untuk mendapatkan angka racikan togel HK malam ini. Tapi tenang saja kami disini akan memberikan Prediksi Bocoran HK Jitu secara gratis untuk anda, sehingga anda tidak perlu lagi khawatir jika ingin mencari situs prediksi togel HK yang akurat dan gratis. Tetapi kami juga mengingatkan untuk anda jika sering mendapatkan jackpot dari bocoran togel hongkong malam ini yang ada di situs ini, kami berharap anda dapat membagikannya juga kepada kerabat dan teman anda yang memiliki hobi yang sama yaitu bermain togel online. Dengan saling berbagi tidak ada ruginya bahkan kita bisa mengalahkan bandot togel bersama-sama. Forum Master Prediksi Hongkong Malam Ini Terpercaya Apakah anda sedang mencari Master Prediksi HK yang akan memberikan racikan atau bocoran togel khususnya pasaran Hongkong? Maka disini adalah tempat yang tepat jika anda mencari racikan Prediksi Hongkong dari master togel terpercaya. Pada kesempatan hari ini Master Prediksi Togel Hongkong telah memberikan racikannya yang dapat anda lihat dalam tabel bocoran HK di atas. Kami sangat senang jika anda selalu mengunjungi forum atau situs prediksi HK kami ini. Seluruh Bocoran HK yang telah kami berikan tentu saja gratis dan tanpa dipungut biaya apapun. Karena kami membuat situs prediksi ini murni demi membantu para pemain togel yang bingung untuk mencari angka kuat untuk dipasangkan dalam pasaran togel Hongkong Malam Ini. Manfaat Prediksi Togel Hongkong Untuk Para Togelers Prediksi Togel Hongkong tentu saja sangat bermanfaat bagi setiap pemain togel online yang menggunakannya. Manfaat yang paling menonjol yaitu anda bisa mencocokkan angka anda sendiri dengan angka yang telah diracik oleh para master togel jitu. Selain itu apabila anda tidak memiliki angka sama sekali yang ingin dipasangkan, anda dapat menggunakan hasil racikan Bocoran HK dalam situs ini untuk dijadikan angka taruhan. Jadi jangan sampai kelewatan segala jenis prediksi togel hongkong yang sudah kami bagikan pada hari ini sehingga anda mendapatkan angka jitu yang ingin digunakan. Sekali lagi kami ingatkan bahwa setiap prediksi yang diberikan tidak kami jamin 100% akan tembus, tetapi setidaknya menambah peluang kemenangan. Sekian pembahasan kami dan kami harapkan anda puas dengan prediksi hk yang sudah kami berikan di situs ini. Semoga kalian jackpot dan salam togel mania. Angka Main: 5746 Angka Ikut: 8463 Colok Bebas: 6 Kepala: 5 7 | Ekor: 8 3 Twin: 44 / 66 ANGKA JITU 2D 57*54*56*58*53*75*74*76* 78*73*45*47*46*48*43*65* SHIO: KAMBING Angka Main: 4092 Angka Ikut: 6410 Colok Bebas: 4 Kepala: 6 9 | Ekor: 1 2 Twin: 44 / 00 ANGKA JITU 2D 40*49*42*46*41*04*09*02* 06*01*94*90*92*96*91*24* SHIO: TIKUS Angka Main: 6128 Angka Ikut: 4368 Colok Bebas: 8 Kepala: 1 4 | Ekor: 3 2 Twin: 66 / 88 ANGKA JITU 2D 61*62*68*64*63*16*12*18* 14*13*26*21*28*24*23*86* SHIO: HARIMAU Angka Main: 1495 Angka Ikut: 5871 Colok Bebas: 5 Kepala: 8 9 | Ekor: 7 4 Twin: 11 / 55 ANGKA JITU 2D 14*19*15*18*17*41*49*45* 48*47*91*94*95*98*97*51* SHIO: AYAM Angka Main: 9124 Angka Ikut: 4859 Colok Bebas: 9 Kepala: 5 1 | Ekor: 2 8 Twin: 99 / 44 ANGKA JITU 2D 91*92*94*98*95*19*12*14* 18*15*29*21*24*28*25*49* SHIO: KERBAU Angka Main: 2095 Angka Ikut: 8152 Colok Bebas: 2 Kepala: 1 0 | Ekor: 9 8 Twin: 22 / 55 ANGKA JITU 2D 20*29*25*28*21*02*09*05* 08*01*92*90*95*98*91*52* SHIO: KUDA
    • Hm. I did try adding that in the user_jvm_args.txt but I get this:  Error: Could not find or load main class C:Program FilesJavajdk-17.0.9binjavaw.exe Caused by: java.lang.ClassNotFoundException: C:Program FilesJavajdk-17.0.9binjavaw.exe Press any key to continue . . . I tried both with "\jdk-17\" (as it appears in the program files) as well as "\jdk-17.0.9\"  No luck. am I placing it in the wrong file? Could the second part be incorrect? 
    • Hello, I am trying to make a drowned transform into a custom mod I made (called Hot Drowned) when it goes through a magma bubble column. I already have the mob fully working in game, but the code for the transformation is giving me trouble. Since I can't edit the drowned code, I tried to make it check on Living Tick Event for a drowned that is doing the ticking and check its position from there in relation to a magma block but its not working. My code is below, thank you in advance. @SubscribeEvent(priority = EventPriority.HIGHEST) public void entityJoinWorld(LivingEvent.LivingTickEvent event, ServerLevel pServerLevel) { System.out.println("Entity Ticked"); Entity entity = event.getEntity(); if (entity.isAlive() && entity instanceof Drowned) { Drowned drowned = (Drowned) entity; BlockPos bPos = BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)); BlockState bPosBlock = pServerLevel.getBlockState(bPos); int dHieght = bPos.getY(); if (bPosBlock == Blocks.WATER.defaultBlockState() || bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); }else { for (int x = dHieght + 64; x > 0; x--) { bPos = BlockPos.of(bPos.below().get(Direction.Axis.Y)); bPosBlock = pServerLevel.getBlockState(bPos); System.out.println(bPosBlock); if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()) { ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); } else { return; } } } } } } }  
    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI Situs Slot Thailand Terpercaya adalah situs yang menyediakan permainan slot online dengan tema dan layanan yang sesuai dengan kebutuhan dan preferensi pemain asal Thailand. Situs-situs ini biasanya menawarkan permainan slot dengan server khusus yang berasal dari Thailand, yang diklaim memiliki tingkat kemenangan yang tinggi dan mudah mendapatkan jackpot. Beberapa situs juga menyediakan permainan slot dengan server dari negara lain, seperti Rusia dan Singapura, yang juga populer di kalangan pemain Thailand.  
  • Topics

×
×
  • Create New...

Important Information

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