Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TILE ENTITY CLASS:
- public class TileDimensionalPortal extends TileEntity {
- public String portalID;
- public int masterStoneX;
- public int masterStoneY;
- public int masterStoneZ;
- private ForgeChunkManager.Ticket chunkTicket;
- public void readFromNBT(NBTTagCompound tag) {
- super.readFromNBT(tag);
- portalID = tag.getString("PortalRitualID");
- masterStoneX = tag.getInteger("masterStoneX");
- masterStoneY = tag.getInteger("masterStoneY");
- masterStoneZ = tag.getInteger("masterStoneZ");
- }
- public void writeToNBT(NBTTagCompound tag) {
- super.writeToNBT(tag);
- tag.setString("PortalRitualID", portalID);
- tag.setInteger("masterStoneX", masterStoneX);
- tag.setInteger("masterStoneY", masterStoneY);
- tag.setInteger("masterStoneZ", masterStoneZ);
- }
- public void requestTicket() {
- chunkTicket = ForgeChunkManager.requestTicket(Sanguimancy.instance, worldObj, ForgeChunkManager.Type.NORMAL);
- chunkTicket.getModData().setInteger("tileX", this.xCoord);
- chunkTicket.getModData().setInteger("tileY", this.yCoord);
- chunkTicket.getModData().setInteger("tileZ", this.zCoord);
- RandomUtils.ChunkloadingUtils.forceChunks(chunkTicket);
- }
- public void releaseTicket() {
- RandomUtils.ChunkloadingUtils.unforceChunks(chunkTicket);
- }
- @Override
- public void invalidate() {
- releaseTicket();
- super.invalidate();
- }
- }
- //CALLBACK CLASS:
- public static class ChunkloadingUtils implements ForgeChunkManager.OrderedLoadingCallback {
- @Override
- public void ticketsLoaded(List<ForgeChunkManager.Ticket> tickets, World world) {
- for (ForgeChunkManager.Ticket ticket : tickets) {
- if (ticket != null) {
- int x = ticket.getModData().getInteger("tileX");
- int y = ticket.getModData().getInteger("tileY");
- int z = ticket.getModData().getInteger("tileZ");
- ((TileDimensionalPortal) world.getTileEntity(x, y, z)).requestTicket();
- }
- }
- }
- @Override
- public List<ForgeChunkManager.Ticket> ticketsLoaded(List<ForgeChunkManager.Ticket> tickets, World world, int maxTicketCount) {
- java.util.List<ForgeChunkManager.Ticket> validTickets = Lists.newArrayList();
- for (ForgeChunkManager.Ticket ticket : tickets) {
- int x = ticket.getModData().getInteger("tileX");
- int y = ticket.getModData().getInteger("tileY");
- int z = ticket.getModData().getInteger("tileZ");
- if (world.getTileEntity(x, y, z) instanceof TileDimensionalPortal)
- validTickets.add(ticket);
- }
- return validTickets;
- }
- public static void unforceChunks(ForgeChunkManager.Ticket chunkTicket) {
- if (chunkTicket != null) {
- Set<ChunkCoordIntPair> chunks = chunkTicket.getChunkList();
- if (chunks.size() == 0) return;
- for (ChunkCoordIntPair c : chunks) ForgeChunkManager.unforceChunk(chunkTicket, c);
- }
- }
- public static void forceChunks(ForgeChunkManager.Ticket chunkTicket) {
- if (chunkTicket != null) {
- Set<ChunkCoordIntPair> chunks = chunkTicket.getChunkList();
- int x = chunkTicket.getModData().getInteger("tileX") >> 4;
- int z = chunkTicket.getModData().getInteger("tileZ") >> 4;
- ChunkCoordIntPair chunkPair = new ChunkCoordIntPair(x, z);
- if (!chunks.contains(chunkPair)) ForgeChunkManager.forceChunk(chunkTicket, chunkPair);
- }
- }
- }
- //CRASH REPORT:
- ---- Minecraft Crash Report ----
- // Surprise! Haha. Well, this is awkward.
- Time: 10/11/14 11:09
- Description: Exception in server tick loop
- java.lang.NullPointerException: Exception in server tick loop
- at tombenpotter.sanguimancy.tile.TileDimensionalPortal.requestTicket(TileDimensionalPortal.java:35)
- at tombenpotter.sanguimancy.util.RandomUtils$ChunkloadingUtils.ticketsLoaded(RandomUtils.java:372)
- at net.minecraftforge.common.ForgeChunkManager.loadWorld(ForgeChunkManager.java:523)
- at net.minecraftforge.common.ForgeInternalHandler.onDimensionLoad(ForgeInternalHandler.java:64)
- at cpw.mods.fml.common.eventhandler.ASMEventHandler_1_ForgeInternalHandler_onDimensionLoad_Load.invoke(.dynamic)
- at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
- at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:139)
- at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:74)
- at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96)
- at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
- at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
- A detailed walkthrough of the error, its code path and all known details is as follows:
- ---------------------------------------------------------------------------------------
- -- System Details --
- Details:
- Minecraft Version: 1.7.10
- Operating System: Windows 7 (amd64) version 6.1
- Java Version: 1.7.0_45, Oracle Corporation
- Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
- Memory: 752681352 bytes (717 MB) / 1038876672 bytes (990 MB) up to 2112618496 bytes (2014 MB)
- JVM Flags: 3 total; -Xincgc -Xmx2048M -Xms1024M
- AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
- IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
- FML: MCP v9.05 FML v7.10.84.1217 Minecraft Forge 10.13.1.1217 17 mods loaded, 17 mods active
- mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- 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
- 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
- CodeChickenCore{1.0.3.26} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- <CoFH ASM>{000} [CoFH ASM Data Initialization] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- 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
- Waila{1.5.5} [Waila] (Waila-1.5.5_1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- 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
- WaslieCore{1.1} [WaslieCore] (WaslieCore-1.1_B43.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- BloodUtils{1.3.1} [BloodUtils] (BloodUtils-1.3.1_B0.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- Sanguimancy{1.1.8} [Sanguimancy] (Sanguimancy) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- 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
- 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
- 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
- ExtraUtilities{1.1.0k} [Extra Utilities] (extrautilities-1.1.0k.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available
- 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
- 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
- Profiler Position: N/A (disabled)
- Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
- Player Count: 0 / 8; []
- Type: Integrated Server (map_client.txt)
- Is Modded: Definitely; Client brand changed to 'fml,forge'
- //RITUAL CLASS:
- package tombenpotter.sanguimancy.rituals;
- import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
- import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
- import WayofTime.alchemicalWizardry.api.rituals.RitualEffect;
- import WayofTime.alchemicalWizardry.api.rituals.Rituals;
- import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler;
- import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper;
- import net.minecraft.block.Block;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.world.World;
- import tombenpotter.sanguimancy.registry.BlocksRegistry;
- import tombenpotter.sanguimancy.tile.TileDimensionalPortal;
- import tombenpotter.sanguimancy.util.LocationsHandler;
- import tombenpotter.sanguimancy.util.PortalLocation;
- import tombenpotter.sanguimancy.util.RandomUtils;
- import java.util.ArrayList;
- import java.util.List;
- public class RitualEffectPortal extends RitualEffect {
- @Override
- public boolean startRitual(IMasterRitualStone ritualStone, EntityPlayer player) {
- String owner = ritualStone.getOwner();
- World world = ritualStone.getWorld();
- int x = ritualStone.getXCoord();
- int y = ritualStone.getYCoord();
- int z = ritualStone.getZCoord();
- ritualStone.getCustomRitualTag().setInteger("ritualDirection", Rituals.getDirectionOfRitual(world, x, y, z, "portalRitual"));
- int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
- if (!world.isRemote) {
- String name = owner;
- if (direction == 1 || direction == 4) {
- for (int i = x - 3; i <= x + 3; i++) {
- for (int k = z - 2; k <= z + 2; k++) {
- if (!world.isAirBlock(i, y, k)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(i, y, k)) + String.valueOf(world.getBlockMetadata(i, y, k)));
- }
- }
- }
- for (int j = y + 1; j <= y + 5; j++) {
- if (!world.isAirBlock(x - 3, y, z)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x - 3, j, z)) + String.valueOf(world.getBlockMetadata(x - 3, j, z)));
- }
- }
- for (int j = y + 1; j <= y + 5; j++) {
- if (!world.isAirBlock(x + 3, y, z)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x + 3, j, z)) + String.valueOf(world.getBlockMetadata(x + 3, j, z)));
- }
- }
- } else if (direction == 2 || direction == 3) {
- for (int k = z - 3; k <= z + 3; k++) {
- for (int i = x - 2; i <= x + 2; i++) {
- if (!world.isAirBlock(i, y, k)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(i, y, k)) + String.valueOf(world.getBlockMetadata(i, y, k)));
- }
- }
- }
- for (int j = y + 1; j <= y + 5; j++) {
- if (!world.isAirBlock(x, y, z - 3)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x, j, z - 3)) + String.valueOf(world.getBlockMetadata(x, j, z - 3)));
- }
- }
- for (int j = y + 1; j <= y + 5; j++) {
- if (!world.isAirBlock(x, y, z + 3)) {
- name = RandomUtils.addStringToEnd(name, Block.blockRegistry.getNameForObject(world.getBlock(x, j, z + 3)) + String.valueOf(world.getBlockMetadata(x, j, z + 3)));
- }
- }
- }
- if (LocationsHandler.getLocationsHandler() != null) {
- if (LocationsHandler.getLocationsHandler().addLocation(name, new PortalLocation(x, y + 1, z, world.provider.dimensionId))) {
- ritualStone.getCustomRitualTag().setString("PortalRitualID", name);
- return true;
- }
- }
- }
- return false;
- }
- @Override
- public void performEffect(IMasterRitualStone ritualStone) {
- String owner = ritualStone.getOwner();
- World world = ritualStone.getWorld();
- int x = ritualStone.getXCoord();
- int y = ritualStone.getYCoord();
- int z = ritualStone.getZCoord();
- int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
- int currentEssence = SoulNetworkHandler.getCurrentEssence(owner);
- if (currentEssence < this.getCostPerRefresh()) {
- EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner);
- if (entityOwner == null) {
- return;
- }
- SoulNetworkHandler.causeNauseaToPlayer(owner);
- } else {
- if (direction == 1 || direction == 4) {
- for (int i = x - 1; i <= x + 1; i++) {
- for (int j = y + 1; j <= y + 3; j++) {
- if (world.isAirBlock(i, j, z)) {
- world.setBlock(i, j, z, BlocksRegistry.dimensionalPortal, 3, 3);
- if (world.getTileEntity(i, j, z) != null && world.getTileEntity(i, j, z) instanceof TileDimensionalPortal) {
- TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(i, j, z);
- tile.masterStoneX = x;
- tile.masterStoneY = y;
- tile.masterStoneZ = z;
- tile.portalID = ritualStone.getCustomRitualTag().getString("PortalRitualID");
- if (i == x && j == y + 2) {
- tile.requestTicket();
- }
- }
- }
- }
- }
- } else if (direction == 2 || direction == 3) {
- for (int k = z - 1; k <= z + 1; k++) {
- for (int j = y + 1; j <= y + 3; j++) {
- if (world.isAirBlock(x, j, k)) {
- world.setBlock(x, j, k, BlocksRegistry.dimensionalPortal, 2, 3);
- if (world.getTileEntity(x, j, k) != null && world.getTileEntity(x, j, k) instanceof TileDimensionalPortal) {
- TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(x, j, k);
- tile.masterStoneX = x;
- tile.masterStoneY = y;
- tile.masterStoneZ = z;
- tile.portalID = ritualStone.getCustomRitualTag().getString("PortalRitualID");
- if (k == z && j == y + 2) {
- tile.requestTicket();
- }
- }
- }
- }
- }
- }
- }
- }
- @Override
- public void onRitualBroken(IMasterRitualStone ritualStone) {
- World world = ritualStone.getWorld();
- int x = ritualStone.getXCoord();
- int y = ritualStone.getYCoord();
- int z = ritualStone.getZCoord();
- int direction = ritualStone.getCustomRitualTag().getInteger("ritualDirection");
- if (LocationsHandler.getLocationsHandler() != null) {
- LocationsHandler.getLocationsHandler().removeLocation(ritualStone.getCustomRitualTag().getString("PortalRitualID"), new PortalLocation(x, y + 1, z, world.provider.dimensionId));
- }
- if (direction == 1 || direction == 4) {
- for (int i = x - 2; i <= x + 2; i++) {
- for (int j = y + 1; j <= y + 3; j++) {
- if (world.getBlock(i, j, z) == BlocksRegistry.dimensionalPortal) {
- if (i == x && j == y + 2) {
- if (world.getTileEntity(i, j, z) != null && world.getTileEntity(i, j, z) instanceof TileDimensionalPortal) {
- TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(i, j, z);
- tile.releaseTicket();
- }
- }
- world.setBlockToAir(i, j, z);
- }
- }
- }
- } else if (direction == 2 || direction == 3) {
- for (int k = z - 2; k <= z + 2; k++) {
- for (int j = y + 1; j <= y + 3; j++) {
- if (world.getBlock(x, j, k) == BlocksRegistry.dimensionalPortal) {
- if (k == z && j == y + 2) {
- if (world.getTileEntity(x, j, k) != null && world.getTileEntity(x, j, k) instanceof TileDimensionalPortal) {
- TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(x, j, k);
- tile.releaseTicket();
- }
- }
- world.setBlockToAir(x, j, k);
- }
- }
- }
- }
- }
- @Override
- public int getCostPerRefresh() {
- return 0;
- }
- @Override
- public List<RitualComponent> getRitualComponentList() {
- ArrayList<RitualComponent> portalRitual = new ArrayList();
- portalRitual.add(new RitualComponent(1, 0, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(2, 0, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(2, 1, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(2, 2, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(2, 3, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(2, 4, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(1, 4, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(0, 4, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-1, 4, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-2, 4, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-2, 3, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-2, 2, 0, RitualComponent.AIR));
- portalRitual.add(new RitualComponent(-2, 1, 0, RitualComponent.AIR));
- return portalRitual;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment