- Версия(и) Minecraft
- 1.12.2
Сборник предназначен для тех, кому уже есть 18 кому суть "доставания чего то из чего то" ясна полностью как ночь в горах.
Просто порой что то требуется в определенном методе для вашей задумки, а этого там нету. И необходимо извращаться в поисках в разнообразных местах.
0) Майнкрафт
Minecraft mc = Minecraft.getMinecraft();
1) Клиентский мир
World world = mc.world;
2) Серверный мир...
3) Серверный мир
World world = FMLCommonHandler.instance().getMinecraftServerInstance().getServer().getEntityWorld();
4)Клиентский игрок
EntityPlayer player = mc.player;
5)Серверный игрок по нику(мир соотвественно должен быть серверным)
EntityPlayerMP player = world.getPlayerByUsername(username)
6) Расположение модели(полагаю obj тоже подгрузит)
ModelResourceLocation mrl = new ModelResourceLocation("modid:model.obj");
7) Получение IBakedModel
IBakedModel model = mc.getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getModel(mrl);
8) Получение ресурса, расположенного по пути
ResourceLocation rl = new ResourceLocation("modid:image.png");
9) Получение шейпов модели
BlockModelShapes bms = mc.getBlockRendererDispatcher().getBlockModelShapes();
10) Получение класса рендера блоков
BlockModelRenderer bmr = mc.getBlockRendererDispatcher().getBlockModelRenderer();
11) Получение тесселятора
Tessellator tessl = Tessellator.getInstance();
12) Получение блока(через клиентский мир)(правда позицию блока все таки придется уже иметь)
Block block = mc.world.getBlockState(pos).getBlock();
13) Получение блока(через серверный мир)
Block block = mc.getRenderViewEntity().getServer().getEntityWorld().getBlockState(pos).getBlock();
14) Получение предмета из ItemBlock'а
Item item = block.getItemFromBlock(item);
15) Получение блока из предмета(не проверял, но скорее всего из предметов блоки вы достать не сможете, а из ItemBlock'ов блоки сможете)
Block block = block.getBlockFromItem(item);
16) Клиентская сущность
Entity entity = this.mc.getRenderViewEntity();
17) Получение IBlockState(через клиентский и серверный мир, как хотите)
IBlockState state = world.getBlockState(pos);
18) Получить текстуру блока(эксклюзивно для 1.10+, насколько я знаю)
TextureAtlasSprite texture = mc.getTextureMapBlocks().getAtlasSprite("modid:image.png");
19) Получение x,y,z координат из BlockPos(для новичков и тех, кто переходит с 1.7 и ему удобнее коры)
BlockPos pos;
любойМетодГдеНадоПозицию(new BlockPos(pos.getX() , pos.getY(), pos.getZ()))
20) Получение полноценного мира из IBlockAccess
*Например в методе есть только IBlockAccess мир. А нам нужен полный для каких то целей. Например,
достать рендом
Random rand = world instanceof World ? ((World)world).rand : new Random();
Буду пополнять понемногу...
Просто порой что то требуется в определенном методе для вашей задумки, а этого там нету. И необходимо извращаться в поисках в разнообразных местах.
1) ForgeHooksClient.class
2) FMLClientHandler.class
3) FMLCommonHandler.class
4) TileEntitySpecialRenderer.class
5) TileEntityRendererDispatcher.class
6) FastTESR.class
7) ForgeBlockModelRenderer.class
2) FMLClientHandler.class
3) FMLCommonHandler.class
4) TileEntitySpecialRenderer.class
5) TileEntityRendererDispatcher.class
6) FastTESR.class
7) ForgeBlockModelRenderer.class
1) CommandEvent.class
Эвент для создания команд.
Путь: net.minecraftforge.event.CommandEvent.CommandEvent(ICommand, ICommandSender, String[])
2) FluidEvent.class && FluidRegisterEvent.class
Позволяет оперировать с жидкостями
Путь: net.minecraftforge.fluids.FluidEvent.FluidEvent(FluidStack, World, BlockPos)
Путь: net.minecraftforge.fluids.FluidRegistry.FluidRegisterEvent.FluidRegisterEvent(String, int)
3) RenderBlockOverlayEvent.class
Судя по названию, позволяет рендерить слои на блоке. Надо попробовать)
Путь: net.minecraftforge.client.event.RenderBlockOverlayEvent.RenderBlockOverlayEvent(EntityPlayer, float, OverlayType, IBlockState, BlockPos)
4) ModelBakeEvent.class && ModelRegistryEvent.class
Эвенты, позволяющие собрать свою модель в игре.
Путь: net.minecraftforge.client.event.ModelRegistryEvent
Путь: net.minecraftforge.client.event.ModelBakeEvent.ModelBakeEvent(ModelManager, IRegistry<ModelResourceLocation, IBakedModel>, ModelLoader)
5) EntityViewRenderEvent.class
Эвент, по факту форджевский хук в ванильный EntityRenderer -можно настроить свое отображение рендера того, что видит энтити.
Путь: net.minecraftforge.client.event.EntityViewRenderEvent.EntityViewRenderEvent(EntityRenderer, Entity, IBlockState, double)
6) BabyEntitySpawnEvent.class
Эвент рождения маленького энтити. Можно изменять ванильных мобов, можно контролировать их размножение и условия размножения.
Путь: net.minecraftforge.event.entity.living.BabyEntitySpawnEvent.BabyEntitySpawnEvent(EntityLiving, EntityLiving, EntityAgeable)
7) ColorHandlerEvent.class(abstract class)
Поможет с окраской блока в разные цвета(кастомные\биома\соседнего блока\бомжа на улице)
Путь: net.minecraftforge.client.event.ColorHandlerEvent
Эвент для создания команд.
Путь: net.minecraftforge.event.CommandEvent.CommandEvent(ICommand, ICommandSender, String[])
2) FluidEvent.class && FluidRegisterEvent.class
Позволяет оперировать с жидкостями
Путь: net.minecraftforge.fluids.FluidEvent.FluidEvent(FluidStack, World, BlockPos)
Путь: net.minecraftforge.fluids.FluidRegistry.FluidRegisterEvent.FluidRegisterEvent(String, int)
3) RenderBlockOverlayEvent.class
Судя по названию, позволяет рендерить слои на блоке. Надо попробовать)
Путь: net.minecraftforge.client.event.RenderBlockOverlayEvent.RenderBlockOverlayEvent(EntityPlayer, float, OverlayType, IBlockState, BlockPos)
4) ModelBakeEvent.class && ModelRegistryEvent.class
Эвенты, позволяющие собрать свою модель в игре.
Путь: net.minecraftforge.client.event.ModelRegistryEvent
Путь: net.minecraftforge.client.event.ModelBakeEvent.ModelBakeEvent(ModelManager, IRegistry<ModelResourceLocation, IBakedModel>, ModelLoader)
5) EntityViewRenderEvent.class
Эвент, по факту форджевский хук в ванильный EntityRenderer -можно настроить свое отображение рендера того, что видит энтити.
Путь: net.minecraftforge.client.event.EntityViewRenderEvent.EntityViewRenderEvent(EntityRenderer, Entity, IBlockState, double)
6) BabyEntitySpawnEvent.class
Эвент рождения маленького энтити. Можно изменять ванильных мобов, можно контролировать их размножение и условия размножения.
Путь: net.minecraftforge.event.entity.living.BabyEntitySpawnEvent.BabyEntitySpawnEvent(EntityLiving, EntityLiving, EntityAgeable)
7) ColorHandlerEvent.class(abstract class)
Поможет с окраской блока в разные цвета(кастомные\биома\соседнего блока\бомжа на улице)
Путь: net.minecraftforge.client.event.ColorHandlerEvent
Minecraft mc = Minecraft.getMinecraft();
1) Клиентский мир
World world = mc.world;
2) Серверный мир...
3) Серверный мир
World world = FMLCommonHandler.instance().getMinecraftServerInstance().getServer().getEntityWorld();
4)Клиентский игрок
EntityPlayer player = mc.player;
5)Серверный игрок по нику(мир соотвественно должен быть серверным)
EntityPlayerMP player = world.getPlayerByUsername(username)
6) Расположение модели(полагаю obj тоже подгрузит)
ModelResourceLocation mrl = new ModelResourceLocation("modid:model.obj");
7) Получение IBakedModel
IBakedModel model = mc.getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getModel(mrl);
8) Получение ресурса, расположенного по пути
ResourceLocation rl = new ResourceLocation("modid:image.png");
9) Получение шейпов модели
BlockModelShapes bms = mc.getBlockRendererDispatcher().getBlockModelShapes();
10) Получение класса рендера блоков
BlockModelRenderer bmr = mc.getBlockRendererDispatcher().getBlockModelRenderer();
11) Получение тесселятора
Tessellator tessl = Tessellator.getInstance();
12) Получение блока(через клиентский мир)(правда позицию блока все таки придется уже иметь)
Block block = mc.world.getBlockState(pos).getBlock();
13) Получение блока(через серверный мир)
Block block = mc.getRenderViewEntity().getServer().getEntityWorld().getBlockState(pos).getBlock();
14) Получение предмета из ItemBlock'а
Item item = block.getItemFromBlock(item);
15) Получение блока из предмета(не проверял, но скорее всего из предметов блоки вы достать не сможете, а из ItemBlock'ов блоки сможете)
Block block = block.getBlockFromItem(item);
16) Клиентская сущность
Entity entity = this.mc.getRenderViewEntity();
17) Получение IBlockState(через клиентский и серверный мир, как хотите)
IBlockState state = world.getBlockState(pos);
18) Получить текстуру блока(эксклюзивно для 1.10+, насколько я знаю)
TextureAtlasSprite texture = mc.getTextureMapBlocks().getAtlasSprite("modid:image.png");
19) Получение x,y,z координат из BlockPos(для новичков и тех, кто переходит с 1.7 и ему удобнее коры)
BlockPos pos;
любойМетодГдеНадоПозицию(new BlockPos(pos.getX() , pos.getY(), pos.getZ()))
20) Получение полноценного мира из IBlockAccess
*Например в методе есть только IBlockAccess мир. А нам нужен полный для каких то целей. Например,
достать рендом
Random rand = world instanceof World ? ((World)world).rand : new Random();
Буду пополнять понемногу...