- 205
- 12
- 103
Всем привет. Сегодня я с довольно необычным вопросом. Сделал я свою энтить, которая должна призываться при клике определенным предметом (смотрел в сторону эндерперла и делал по аналогии), сделал, но чет... Вместо ожидаемой мною стрелы вызывается свинка. F3 показывает что это не просто модель свинки, а вполне реальный minecraft: pig, и активно спамит в консоль вот этой гадостью:
А вот и сама свинка:
Я ожидал чего-то вроде отсутствующей текстуры, раз уж на то пошло, но никак не свинку...
Итем:
Энтить:
Её рендер, который я понятия не имею куда нужно засовывать:
Собственно, да... Я в край сломался после увиденной свиньи и теперь окончательно ничего не понимаю.
Java:
[15:38:11] [Render thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Client
java.lang.IllegalStateException: Invalid entity data item type for field 7 on entity PigEntity['Свинья'/603, l='MpServer', x=225.79, y=72.52, z=-238.49]: old=0(class java.lang.Byte), new=1 air(class net.minecraft.item.ItemStack)
at net.minecraft.network.datasync.EntityDataManager.setEntryValue(EntityDataManager.java:246) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.network.datasync.EntityDataManager.setEntryValues(EntityDataManager.java:234) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.client.network.play.ClientPlayNetHandler.handleEntityMetadata(ClientPlayNetHandler.java:587) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
at net.minecraft.network.play.server.SEntityMetadataPacket.processPacket(SEntityMetadataPacket.java:50) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.network.play.server.SEntityMetadataPacket.processPacket(SEntityMetadataPacket.java:12) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:19) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:140) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.util.concurrent.RecursiveEventLoop.run(RecursiveEventLoop.java:22) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading}
at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:110) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.util.concurrent.ThreadTaskExecutor.drainTasks(ThreadTaskExecutor.java:97) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:935) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.client.Minecraft.run(Minecraft.java:559) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.client.main.Main.main(Main.java:177) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_242] {}
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_242] {}
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_242] {}
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_242] {}
at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.15.2-31.1.30_mapped_snapshot_20200229-1.15.1-recomp.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.30_mapped_snapshot_20200229-1.15.1-recomp.jar:?] {}
А вот и сама свинка:
Я ожидал чего-то вроде отсутствующей текстуры, раз уж на то пошло, но никак не свинку...
Итем:
Java:
public class ItemWoodenArrow extends Item {
public ItemWoodenArrow(Item.Properties properties) {
super(properties);
}
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
ItemStack stack = playerIn.getHeldItem(handIn);
worldIn.playSound(null, playerIn.getPosition(), SoundEvents.BLOCK_ANVIL_HIT, SoundCategory.PLAYERS, 1.0f, 1.0f);
if (!worldIn.isRemote) {
EntityWoodenArrow entityWoodenArrow = new EntityWoodenArrow(worldIn, playerIn);
entityWoodenArrow.setItem(stack);
entityWoodenArrow.shoot(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, 0.0F, 1.5F, 0.5F);
worldIn.addEntity(entityWoodenArrow);
}
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, stack);
}
}
Энтить:
Java:
public class EntityWoodenArrow extends ProjectileItemEntity {
public static final EntityType<EntityWoodenArrow> WOODEN_ARROW = register();
public EntityWoodenArrow(EntityType<? extends EntityWoodenArrow> entityIn, World worldIn) {
super(entityIn, worldIn);
}
public EntityWoodenArrow(World worldIn, LivingEntity throwerIn) {
super(WOODEN_ARROW, throwerIn, worldIn);
}
@Override
public IPacket<?> createSpawnPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
@Override
protected void onImpact(RayTraceResult result) {
if (!this.world.isRemote) {
this.remove();
}
}
@Override
protected Item getDefaultItem() {
return FunctionalItems.Items.wooden_arrow;
}
@Override
public void tick() {
LivingEntity livingentity = this.getThrower();
if (livingentity != null && livingentity instanceof PlayerEntity && !livingentity.isAlive()) {
this.remove();
} else {
super.tick();
}
}
@SubscribeEvent
public static EntityType register() {
return EntityType.Builder.<EntityWoodenArrow>create(EntityWoodenArrow::new, EntityClassification.MISC).size(0.8F, 0.8F).build("wooden_arrow").setRegistryName(Reference.MODID, "wooden_arrow");
}
}
Её рендер, который я понятия не имею куда нужно засовывать:
Java:
@OnlyIn(Dist.CLIENT)
public class WoodenArrowRender extends EntityRenderer<EntityWoodenArrow> {
private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MODID, "textures/item/copper_ore"); //Текстурка меди тут просто так, нормальную еще не лепил.
public WoodenArrowRender(EntityRendererManager renderManager) {
super(renderManager);
renderManager.getFontRenderer().drawStringWithShadow("Wooden Arrow", 0, 0.5f, 2);
}
@Override
public void render(EntityWoodenArrow entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn) {
super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
}
@Override
public ResourceLocation getEntityTexture(EntityWoodenArrow entity) {
return TEXTURE;
}
}
Собственно, да... Я в край сломался после увиденной свиньи и теперь окончательно ничего не понимаю.

