Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
То есть, их нигде не написано?ЭТи 8 вертексов с модели достаются...
все с жысонов читается жиТо есть, их нигде не написано?
Эх. Чет ничего я так и не понял.все с жысонов читается жи
public boolean onPlayerDestroyBlock(BlockPos pos)
{
if (this.currentGameType.hasLimitedInteractions())
{
if (this.currentGameType == GameType.SPECTATOR)
{
return false;
}
if (!this.mc.player.isAllowEdit())
{
ItemStack itemstack = this.mc.player.getHeldItemMainhand();
if (itemstack.isEmpty())
{
return false;
}
if (!itemstack.canDestroy(this.mc.world.getBlockState(pos).getBlock()))
{
return false;
}
}
}
public void renderBlockDamage(IBlockState state, BlockPos pos, TextureAtlasSprite texture, IBlockAccess blockAccess)
{
if (state.getRenderType() == EnumBlockRenderType.MODEL)
{
state = state.getActualState(blockAccess, pos);
IBakedModel ibakedmodel = this.blockModelShapes.getModelForState(state);
IBakedModel ibakedmodel1 = net.minecraftforge.client.ForgeHooksClient.getDamageModel(ibakedmodel, texture, state, blockAccess, pos);
this.blockModelRenderer.renderModel(blockAccess, ibakedmodel1, state, pos, Tessellator.getInstance().getBuffer(), true);
}
}
public class LayerEvent {
static Minecraft mc = Minecraft.getMinecraft();
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void layer(BlockEvent.PlaceEvent e) {
IBlockAccess world = e.getWorld();
BlockPos pos = e.getPos();
IBlockState state = e.getWorld().getBlockState(pos).getActualState(world, pos);
Block block = e.getWorld().getBlockState(pos).getBlock();
BlockModelShapes bms = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes();
TextureAtlasSprite texture = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("realism:blocks/panehorizontal");
IBakedModel ibakedmodel = bms.getModelForState(state);
IBakedModel ibakedmodel1 = net.minecraftforge.client.ForgeHooksClient.getDamageModel(ibakedmodel, texture, state, world, pos);
ResourceLocation glass = new ResourceLocation("realism:blocks/panehorizontal");
bms.getModelManager().getTextureMap().registerSprite(glass);
BlockModelRenderer bmr = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer();
//Tessellator.getInstance().getBuffer().addVertexData(vertexData);
Entity entity = this.mc.getRenderViewEntity();
Tessellator rs = Tessellator.getInstance();
if(e.getWorld().getBlockState(pos).getBlock() == Blocks.BRICK_BLOCK) {
bmr.renderModel(world, ibakedmodel1, state, pos, Tessellator.getInstance().getBuffer(), true);
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void spriteRegisterEventPre(TextureStitchEvent.Pre event) {
ResourceLocation glass = new ResourceLocation("realism:blocks/panehorizontal");
event.getMap().registerSprite(glass);
}
}
}
[23:20:03] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.event.world.BlockEvent$PlaceEvent@52bb1655:
net.minecraft.util.ReportedException: Tesselating block model
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:55) ~[BlockModelRenderer.class:?]
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:38) ~[BlockModelRenderer.class:?]
at ru.legendgamer.Realism.Events.LayerEvent.layer(LayerEvent.java:59) ~[LayerEvent.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_23_LayerEvent_layer_PlaceEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) [EventBus.class:?]
at net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(ForgeEventFactory.java:149) [ForgeEventFactory.class:?]
at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:891) [ForgeHooks.class:?]
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:200) [ItemStack.class:?]
at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:504) [PlayerInteractionManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:767) [NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) [CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) [CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_151]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_151]
at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:796) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:741) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:590) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
Caused by: java.lang.IllegalArgumentException: vertex lighter needs format with lightmap
at net.minecraftforge.client.model.pipeline.VertexLighterFlat.setParent(VertexLighterFlat.java:89) ~[VertexLighterFlat.class:?]
at net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer.renderModelSmooth(ForgeBlockModelRenderer.java:100) ~[ForgeBlockModelRenderer.class:?]
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:47) ~[BlockModelRenderer.class:?]
... 21 more
[23:20:03] [Server thread/ERROR] [FML]: Index: 1 Listeners:
[23:20:03] [Server thread/ERROR] [FML]: 0: NORMAL
[23:20:03] [Server thread/ERROR] [FML]: 1: ASM: ru.legendgamer.Realism.Events.LayerEvent@51920bb0 layer(Lnet/minecraftforge/event/world/BlockEvent$PlaceEvent;)V
[23:20:03] [Server thread/FATAL]: Error executing task
java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Tesselating block model
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_151]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_151]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:796) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:741) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:590) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
Caused by: net.minecraft.util.ReportedException: Tesselating block model
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:55) ~[BlockModelRenderer.class:?]
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:38) ~[BlockModelRenderer.class:?]
at ru.legendgamer.Realism.Events.LayerEvent.layer(LayerEvent.java:59) ~[LayerEvent.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_23_LayerEvent_layer_PlaceEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) ~[EventBus.class:?]
at net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(ForgeEventFactory.java:149) ~[ForgeEventFactory.class:?]
at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:891) ~[ForgeHooks.class:?]
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:200) ~[ItemStack.class:?]
at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:504) ~[PlayerInteractionManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:767) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_151]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_151]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 5 more
Caused by: java.lang.IllegalArgumentException: vertex lighter needs format with lightmap
at net.minecraftforge.client.model.pipeline.VertexLighterFlat.setParent(VertexLighterFlat.java:89) ~[VertexLighterFlat.class:?]
at net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer.renderModelSmooth(ForgeBlockModelRenderer.java:100) ~[ForgeBlockModelRenderer.class:?]
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:47) ~[BlockModelRenderer.class:?]
at net.minecraft.client.renderer.BlockModelRenderer.renderModel(BlockModelRenderer.java:38) ~[BlockModelRenderer.class:?]
at ru.legendgamer.Realism.Events.LayerEvent.layer(LayerEvent.java:59) ~[LayerEvent.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_23_LayerEvent_layer_PlaceEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) ~[EventBus.class:?]
at net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(ForgeEventFactory.java:149) ~[ForgeEventFactory.class:?]
at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:891) ~[ForgeHooks.class:?]
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:200) ~[ItemStack.class:?]
at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:504) ~[PlayerInteractionManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:767) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_151]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_151]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 5 more
Рисовать модель при плейсе блока? В потоке ворлда? (хах)Попробовал реализовать такую же примерно штуку у себя. Попутно открыл много радостей по поводу получения разных всяких методов.
да хоть где)) Не нашел лучшего места. Думал так: при установке блока будетрендерится моделькаРисовать модель при плейсе блока? В потоке ворлда? (хах)
Например?Он может рисовать только в потоке где присутствует opengl context, и в потоке мира его точно нет, поверь.