package com.mcmoddev.communitymod.blockyentities; import java.util.List; import com.mcmoddev.communitymod.CommunityGlobals; import com.mcmoddev.communitymod.CommunityMod; import com.mcmoddev.communitymod.ISubMod; import com.mcmoddev.communitymod.SubMod; import com.mcmoddev.communitymod.shared.ClientUtil; import net.minecraft.block.Block; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.LoadingCallback; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.event.world.GetCollisionBoxesEvent; import net.minecraftforge.fml.client.registry.IRenderFactory; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.registries.IForgeRegistry; @SubMod(name = "blocky entities", attribution = "Snakefangox") @EventBusSubscriber public class BlockyEntities implements ISubMod { public static int MaxRocketSize = 10000; ShipCore shipCore; @Override public void registerModels(ModelRegistryEvent event) { RenderingRegistry.registerEntityRenderingHandler(BaseVehicleEntity.class, new IRenderFactory<BaseVehicleEntity>(){public Render<BaseVehicleEntity> createRenderFor(RenderManager manager) {return new BaseVehicleRender(manager);}}); ClientUtil.simpleItemModel(Item.getItemFromBlock(shipCore)); } @Override public void onPreInit(FMLPreInitializationEvent event) { PacketHandler.registerMessages("hyperstellar"); EntityRegistry.registerModEntity(new ResourceLocation(CommunityGlobals.MOD_ID, "BaseVehicle"), BaseVehicleEntity.class, "BaseVehicle", 45, CommunityMod.INSTANCE, 64, 3, true); if (!ForgeChunkManager.getConfig().hasCategory(CommunityGlobals.MOD_ID)) { ForgeChunkManager.getConfig().get(CommunityGlobals.MOD_ID, "maximumChunksPerTicket", MaxRocketSize / 16) .setMinValue(0); ForgeChunkManager.getConfig().get(CommunityGlobals.MOD_ID, "maximumTicketCount", 10000).setMinValue(0); ForgeChunkManager.getConfig().save(); } HDataSerializers.register(); } @Override public void onInit(FMLInitializationEvent event) { StorageDimReg.regStorageDim(); ForgeChunkManager.setForcedChunkLoadingCallback(CommunityMod.INSTANCE, new ChunkCallback()); } public class ChunkCallback implements LoadingCallback { @Override public void ticketsLoaded(List<Ticket> tickets, World world) { } } @Override public void registerBlocks(IForgeRegistry<Block> reg) { shipCore = new ShipCore(); reg.register(shipCore); GameRegistry.registerTileEntity(ShipCoreTE.class, new ResourceLocation(CommunityGlobals.MOD_ID, shipCore.getRegistryName().getPath() + "block")); } @Override public void registerItems(IForgeRegistry<Item> reg) { reg.register(new ItemBlock(shipCore).setRegistryName(shipCore.getRegistryName())); } @SubscribeEvent public static void onCollision(GetCollisionBoxesEvent e) { if (e.getEntity() != null) { for (BaseVehicleEntity bsv : e.getWorld().getEntitiesWithinAABB(BaseVehicleEntity.class, e.getAabb().grow(16))) { if (bsv != e.getEntity()) { for (BlockPos bp : bsv.getBlocks().keySet()) { if (bp != null) { bsv.getBlocks().get(bp).blockstate.addCollisionBoxToList(bsv.getStorage(), bsv.localBlockPosToGlobal(bp), e.getAabb(), e.getCollisionBoxesList(), e.getEntity(), false); } } } } } } }