Tombenpotter

Untitled

Nov 10th, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.45 KB | None | 0 0
  1. //TILE ENTITY CLASS:
  2. public class TileDimensionalPortal extends TileEntity {
  3.  
  4.     public String portalID;
  5.     public int masterStoneX;
  6.     public int masterStoneY;
  7.     public int masterStoneZ;
  8.     private ForgeChunkManager.Ticket chunkTicket;
  9.  
  10.     public void readFromNBT(NBTTagCompound tag) {
  11.         super.readFromNBT(tag);
  12.         portalID = tag.getString("PortalRitualID");
  13.         masterStoneX = tag.getInteger("masterStoneX");
  14.         masterStoneY = tag.getInteger("masterStoneY");
  15.         masterStoneZ = tag.getInteger("masterStoneZ");
  16.     }
  17.  
  18.     public void writeToNBT(NBTTagCompound tag) {
  19.         super.writeToNBT(tag);
  20.         tag.setString("PortalRitualID", portalID);
  21.         tag.setInteger("masterStoneX", masterStoneX);
  22.         tag.setInteger("masterStoneY", masterStoneY);
  23.         tag.setInteger("masterStoneZ", masterStoneZ);
  24.     }
  25.  
  26.     public void requestTicket() {
  27.         chunkTicket = ForgeChunkManager.requestTicket(Sanguimancy.instance, worldObj, ForgeChunkManager.Type.NORMAL);
  28.         chunkTicket.getModData().setInteger("tileX", this.xCoord);
  29.         chunkTicket.getModData().setInteger("tileY", this.yCoord);
  30.         chunkTicket.getModData().setInteger("tileZ", this.zCoord);
  31.         RandomUtils.ChunkloadingUtils.forceChunks(chunkTicket);
  32.     }
  33.  
  34.     public void releaseTicket() {
  35.         RandomUtils.ChunkloadingUtils.unforceChunks(chunkTicket);
  36.     }
  37.  
  38.     @Override
  39.     public void invalidate() {
  40.         releaseTicket();
  41.         super.invalidate();
  42.     }
  43. }
  44.  
  45. //CALLBACK CLASS:
  46. public static class ChunkloadingUtils implements ForgeChunkManager.OrderedLoadingCallback {
  47.         @Override
  48.         public void ticketsLoaded(List<ForgeChunkManager.Ticket> tickets, World world) {
  49.             for (ForgeChunkManager.Ticket ticket : tickets) {
  50.                 if (ticket != null) {
  51.                     int x = ticket.getModData().getInteger("tileX");
  52.                     int y = ticket.getModData().getInteger("tileY");
  53.                     int z = ticket.getModData().getInteger("tileZ");
  54.                     ((TileDimensionalPortal) world.getTileEntity(x, y, z)).requestTicket();
  55.                 }
  56.             }
  57.         }
  58.  
  59.         @Override
  60.         public List<ForgeChunkManager.Ticket> ticketsLoaded(List<ForgeChunkManager.Ticket> tickets, World world, int maxTicketCount) {
  61.             java.util.List<ForgeChunkManager.Ticket> validTickets = Lists.newArrayList();
  62.             for (ForgeChunkManager.Ticket ticket : tickets) {
  63.                 int x = ticket.getModData().getInteger("tileX");
  64.                 int y = ticket.getModData().getInteger("tileY");
  65.                 int z = ticket.getModData().getInteger("tileZ");
  66.                 if (world.getTileEntity(x, y, z) instanceof TileDimensionalPortal)
  67.                     validTickets.add(ticket);
  68.             }
  69.             return validTickets;
  70.         }
  71.  
  72.         public static void unforceChunks(ForgeChunkManager.Ticket chunkTicket) {
  73.             if (chunkTicket != null) {
  74.                 Set<ChunkCoordIntPair> chunks = chunkTicket.getChunkList();
  75.                 if (chunks.size() == 0) return;
  76.                 for (ChunkCoordIntPair c : chunks) ForgeChunkManager.unforceChunk(chunkTicket, c);
  77.             }
  78.         }
  79.  
  80.         public static void forceChunks(ForgeChunkManager.Ticket chunkTicket) {
  81.             if (chunkTicket != null) {
  82.                 Set<ChunkCoordIntPair> chunks = chunkTicket.getChunkList();
  83.                 int x = chunkTicket.getModData().getInteger("tileX") >> 4;
  84.                 int z = chunkTicket.getModData().getInteger("tileZ") >> 4;
  85.                 ChunkCoordIntPair chunkPair = new ChunkCoordIntPair(x, z);
  86.                 if (!chunks.contains(chunkPair)) ForgeChunkManager.forceChunk(chunkTicket, chunkPair);
  87.             }
  88.         }
  89.     }
  90.  
  91. //CRASH REPORT:
  92. ---- Minecraft Crash Report ----
  93. // Surprise! Haha. Well, this is awkward.
  94.  
  95. Time: 10/11/14 11:09
  96. Description: Exception in server tick loop
  97.  
  98. java.lang.NullPointerException: Exception in server tick loop
  99.     at tombenpotter.sanguimancy.tile.TileDimensionalPortal.requestTicket(TileDimensionalPortal.java:35)
  100.     at tombenpotter.sanguimancy.util.RandomUtils$ChunkloadingUtils.ticketsLoaded(RandomUtils.java:372)
  101.     at net.minecraftforge.common.ForgeChunkManager.loadWorld(ForgeChunkManager.java:523)
  102.     at net.minecraftforge.common.ForgeInternalHandler.onDimensionLoad(ForgeInternalHandler.java:64)
  103.     at cpw.mods.fml.common.eventhandler.ASMEventHandler_1_ForgeInternalHandler_onDimensionLoad_Load.invoke(.dynamic)
  104.     at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
  105.     at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:139)
  106.     at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:74)
  107.     at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96)
  108.     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
  109.     at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
  110.  
  111.  
  112. A detailed walkthrough of the error, its code path and all known details is as follows:
  113. ---------------------------------------------------------------------------------------
  114.  
  115. -- System Details --
  116. Details:
  117.     Minecraft Version: 1.7.10
  118.     Operating System: Windows 7 (amd64) version 6.1
  119.     Java Version: 1.7.0_45, Oracle Corporation
  120.     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
  121.     Memory: 752681352 bytes (717 MB) / 1038876672 bytes (990 MB) up to 2112618496 bytes (2014 MB)
  122.     JVM Flags: 3 total; -Xincgc -Xmx2048M -Xms1024M
  123.     AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
  124.     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
  125.     FML: MCP v9.05 FML v7.10.84.1217 Minecraft Forge 10.13.1.1217 17 mods loaded, 17 mods active
  126.     mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  127.     FML{7.10.84.1217} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.1.1217.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  128.     Forge{10.13.1.1217} [Minecraft Forge] (forgeSrc-1.7.10-10.13.1.1217.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  129.     CodeChickenCore{1.0.3.26} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  130.     <CoFH ASM>{000} [CoFH ASM Data Initialization] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  131.     NotEnoughItems{1.0.3.56} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.3.57-dev.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  132.     Waila{1.5.5} [Waila] (Waila-1.5.5_1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  133.     AWWayofTime{v1.2.0} [Blood Magic: Alchemical Wizardry] (BloodMagic-deobf-1.7.10-1.2.0kinni.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  134.     WaslieCore{1.1} [WaslieCore] (WaslieCore-1.1_B43.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  135.     BloodUtils{1.3.1} [BloodUtils] (BloodUtils-1.3.1_B0.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  136.     Sanguimancy{1.1.8} [Sanguimancy] (Sanguimancy) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  137.     ChickenChunks{1.3.4.14} [ChickenChunks] (ChickenChunks-1.7.10-1.3.4.14-dev.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  138.     CoFHCore{1.7.10R3.0.0B6} [CoFH Core] (CoFHCore-[1.7.10]3.0.0B6-dev-32.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  139.     ThermalFoundation{1.7.10R1.0.0B3} [Thermal Foundation] (ThermalFoundation-[1.7.10]1.0.0B3-dev-8.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  140.     ExtraUtilities{1.1.0k} [Extra Utilities] (extrautilities-1.1.0k.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  141.     IronChest{6.0.62.742} [Iron Chest] (ironchest-1.7.10-6.0.62.742-deobf.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  142.     ThermalExpansion{1.7.10R4.0.0B5} [Thermal Expansion] (ThermalExpansion-[1.7.10]4.0.0B5-dev-13.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
  143.     Profiler Position: N/A (disabled)
  144.     Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
  145.     Player Count: 0 / 8; []
  146.     Type: Integrated Server (map_client.txt)
  147.     Is Modded: Definitely; Client brand changed to 'fml,forge'
  148.  
  149. //RITUAL CLASS:
  150. package tombenpotter.sanguimancy.rituals;
  151.  
  152. import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
  153. import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
  154. import WayofTime.alchemicalWizardry.api.rituals.RitualEffect;
  155. import WayofTime.alchemicalWizardry.api.rituals.Rituals;
  156. import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler;
  157. import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper;
  158. import net.minecraft.block.Block;
  159. import net.minecraft.entity.player.EntityPlayer;
  160. import net.minecraft.world.World;
  161. import tombenpotter.sanguimancy.registry.BlocksRegistry;
  162. import tombenpotter.sanguimancy.tile.TileDimensionalPortal;
  163. import tombenpotter.sanguimancy.util.LocationsHandler;
  164. import tombenpotter.sanguimancy.util.PortalLocation;
  165. import tombenpotter.sanguimancy.util.RandomUtils;
  166.  
  167. import java.util.ArrayList;
  168. import java.util.List;
  169.  
  170. public class RitualEffectPortal extends RitualEffect {
  171.  
  172.     @Override
  173.     public boolean startRitual(IMasterRitualStone ritualStone, EntityPlayer player) {
  174.         String owner = ritualStone.getOwner();
  175.         World world = ritualStone.getWorld();
  176.         int x = ritualStone.getXCoord();
  177.         int y = ritualStone.getYCoord();
  178.         int z = ritualStone.getZCoord();
  179.         ritualStone.getCustomRitualTag().setInteger("ritualDirection", Rituals.getDirectionOfRitual(world, x, y, z, "portalRitual"));
  180.         int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
  181.         if (!world.isRemote) {
  182.             String name = owner;
  183.             if (direction == 1 || direction == 4) {
  184.                 for (int i = x - 3; i <= x + 3; i++) {
  185.                     for (int k = z - 2; k <= z + 2; k++) {
  186.                         if (!world.isAirBlock(i, y, k)) {
  187.                             name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(i, y, k)) + String.valueOf(world.getBlockMetadata(i, y, k)));
  188.                         }
  189.                     }
  190.                 }
  191.                 for (int j = y + 1; j <= y + 5; j++) {
  192.                     if (!world.isAirBlock(x - 3, y, z)) {
  193.                         name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x - 3, j, z)) + String.valueOf(world.getBlockMetadata(x - 3, j, z)));
  194.                     }
  195.                 }
  196.                 for (int j = y + 1; j <= y + 5; j++) {
  197.                     if (!world.isAirBlock(x + 3, y, z)) {
  198.                         name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x + 3, j, z)) + String.valueOf(world.getBlockMetadata(x + 3, j, z)));
  199.                     }
  200.                 }
  201.             } else if (direction == 2 || direction == 3) {
  202.                 for (int k = z - 3; k <= z + 3; k++) {
  203.                     for (int i = x - 2; i <= x + 2; i++) {
  204.                         if (!world.isAirBlock(i, y, k)) {
  205.                             name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(i, y, k)) + String.valueOf(world.getBlockMetadata(i, y, k)));
  206.                         }
  207.                     }
  208.                 }
  209.                 for (int j = y + 1; j <= y + 5; j++) {
  210.                     if (!world.isAirBlock(x, y, z - 3)) {
  211.                         name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x, j, z - 3)) + String.valueOf(world.getBlockMetadata(x, j, z - 3)));
  212.                     }
  213.                 }
  214.                 for (int j = y + 1; j <= y + 5; j++) {
  215.                     if (!world.isAirBlock(x, y, z + 3)) {
  216.                         name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x, j, z + 3)) + String.valueOf(world.getBlockMetadata(x, j, z + 3)));
  217.                     }
  218.                 }
  219.             }
  220.             if (LocationsHandler.getLocationsHandler() != null) {
  221.                 if (LocationsHandler.getLocationsHandler().addLocation(name, new PortalLocation(x, y + 1, z, world.provider.dimensionId))) {
  222.                     ritualStone.getCustomRitualTag().setString("PortalRitualID", name);
  223.                     return true;
  224.                 }
  225.             }
  226.         }
  227.         return false;
  228.     }
  229.  
  230.     @Override
  231.     public void performEffect(IMasterRitualStone ritualStone) {
  232.         String owner = ritualStone.getOwner();
  233.         World world = ritualStone.getWorld();
  234.         int x = ritualStone.getXCoord();
  235.         int y = ritualStone.getYCoord();
  236.         int z = ritualStone.getZCoord();
  237.         int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
  238.         int currentEssence = SoulNetworkHandler.getCurrentEssence(owner);
  239.         if (currentEssence < this.getCostPerRefresh()) {
  240.             EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner);
  241.             if (entityOwner == null) {
  242.                 return;
  243.             }
  244.             SoulNetworkHandler.causeNauseaToPlayer(owner);
  245.         } else {
  246.             if (direction == 1 || direction == 4) {
  247.                 for (int i = x - 1; i <= x + 1; i++) {
  248.                     for (int j = y + 1; j <= y + 3; j++) {
  249.                         if (world.isAirBlock(i, j, z)) {
  250.                             world.setBlock(i, j, z, BlocksRegistry.dimensionalPortal, 3, 3);
  251.                             if (world.getTileEntity(i, j, z) != null && world.getTileEntity(i, j, z) instanceof TileDimensionalPortal) {
  252.                                 TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(i, j, z);
  253.                                 tile.masterStoneX = x;
  254.                                 tile.masterStoneY = y;
  255.                                 tile.masterStoneZ = z;
  256.                                 tile.portalID = ritualStone.getCustomRitualTag().getString("PortalRitualID");
  257.                                 if (i == x && j == y + 2) {
  258.                                     tile.requestTicket();
  259.                                 }
  260.                             }
  261.                         }
  262.                     }
  263.                 }
  264.             } else if (direction == 2 || direction == 3) {
  265.                 for (int k = z - 1; k <= z + 1; k++) {
  266.                     for (int j = y + 1; j <= y + 3; j++) {
  267.                         if (world.isAirBlock(x, j, k)) {
  268.                             world.setBlock(x, j, k, BlocksRegistry.dimensionalPortal, 2, 3);
  269.                             if (world.getTileEntity(x, j, k) != null && world.getTileEntity(x, j, k) instanceof TileDimensionalPortal) {
  270.                                 TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(x, j, k);
  271.                                 tile.masterStoneX = x;
  272.                                 tile.masterStoneY = y;
  273.                                 tile.masterStoneZ = z;
  274.                                 tile.portalID = ritualStone.getCustomRitualTag().getString("PortalRitualID");
  275.                                 if (k == z && j == y + 2) {
  276.                                     tile.requestTicket();
  277.                                 }
  278.                             }
  279.                         }
  280.                     }
  281.                 }
  282.             }
  283.         }
  284.     }
  285.  
  286.     @Override
  287.     public void onRitualBroken(IMasterRitualStone ritualStone) {
  288.         World world = ritualStone.getWorld();
  289.         int x = ritualStone.getXCoord();
  290.         int y = ritualStone.getYCoord();
  291.         int z = ritualStone.getZCoord();
  292.         int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
  293.         if (LocationsHandler.getLocationsHandler() != null) {
  294.             LocationsHandler.getLocationsHandler().removeLocation(ritualStone.getCustomRitualTag().getString("PortalRitualID"), new PortalLocation(x, y + 1, z, world.provider.dimensionId));
  295.         }
  296.         if (direction == 1 || direction == 4) {
  297.             for (int i = x - 2; i <= x + 2; i++) {
  298.                 for (int j = y + 1; j <= y + 3; j++) {
  299.                     if (world.getBlock(i, j, z) == BlocksRegistry.dimensionalPortal) {
  300.                         if (i == x && j == y + 2) {
  301.                             if (world.getTileEntity(i, j, z) != null && world.getTileEntity(i, j, z) instanceof TileDimensionalPortal) {
  302.                                 TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(i, j, z);
  303.                                 tile.releaseTicket();
  304.                             }
  305.                         }
  306.                         world.setBlockToAir(i, j, z);
  307.                     }
  308.                 }
  309.             }
  310.         } else if (direction == 2 || direction == 3) {
  311.             for (int k = z - 2; k <= z + 2; k++) {
  312.                 for (int j = y + 1; j <= y + 3; j++) {
  313.                     if (world.getBlock(x, j, k) == BlocksRegistry.dimensionalPortal) {
  314.                         if (k == z && j == y + 2) {
  315.                             if (world.getTileEntity(x, j, k) != null && world.getTileEntity(x, j, k) instanceof TileDimensionalPortal) {
  316.                                 TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(x, j, k);
  317.                                 tile.releaseTicket();
  318.                             }
  319.                         }
  320.                         world.setBlockToAir(x, j, k);
  321.                     }
  322.                 }
  323.             }
  324.         }
  325.     }
  326.  
  327.     @Override
  328.     public int getCostPerRefresh() {
  329.         return 0;
  330.     }
  331.  
  332.     @Override
  333.     public List<RitualComponent> getRitualComponentList() {
  334.         ArrayList<RitualComponent> portalRitual = new ArrayList();
  335.         portalRitual.add(new RitualComponent(1, 0, 0, RitualComponent.AIR));
  336.         portalRitual.add(new RitualComponent(2, 0, 0, RitualComponent.AIR));
  337.         portalRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.AIR));
  338.         portalRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.AIR));
  339.         portalRitual.add(new RitualComponent(2, 1, 0, RitualComponent.AIR));
  340.         portalRitual.add(new RitualComponent(2, 2, 0, RitualComponent.AIR));
  341.         portalRitual.add(new RitualComponent(2, 3, 0, RitualComponent.AIR));
  342.         portalRitual.add(new RitualComponent(2, 4, 0, RitualComponent.AIR));
  343.         portalRitual.add(new RitualComponent(1, 4, 0, RitualComponent.AIR));
  344.         portalRitual.add(new RitualComponent(0, 4, 0, RitualComponent.AIR));
  345.         portalRitual.add(new RitualComponent(-1, 4, 0, RitualComponent.AIR));
  346.         portalRitual.add(new RitualComponent(-2, 4, 0, RitualComponent.AIR));
  347.         portalRitual.add(new RitualComponent(-2, 3, 0, RitualComponent.AIR));
  348.         portalRitual.add(new RitualComponent(-2, 2, 0, RitualComponent.AIR));
  349.         portalRitual.add(new RitualComponent(-2, 1, 0, RitualComponent.AIR));
  350.         return portalRitual;
  351.     }
  352. }
Advertisement
Add Comment
Please, Sign In to add comment