diff options
Diffstat (limited to 'src/Java')
4 files changed, 65 insertions, 54 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index ff6edde476..d22426246d 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -5,9 +5,6 @@ import static gtPlusPlus.core.lib.CORE.ConfigSwitches.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; -import java.util.HashMap; -import java.util.Timer; - import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.SidedProxy; @@ -22,8 +19,6 @@ import gregtech.api.enums.Materials; import gregtech.api.util.FishPondFakeRecipe; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; -import gregtech.common.GT_Worldgen_GT_Ore_Layer; - import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.data.Pair; @@ -42,7 +37,6 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.nuclear.FLUORIDES; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.data.ArrayUtils; import gtPlusPlus.core.util.data.LocaleUtils; import gtPlusPlus.core.util.minecraft.*; import gtPlusPlus.core.util.sys.GeoUtils; @@ -168,11 +162,6 @@ public class GTplusplus implements ActionListener { @EventHandler public void serverStarting(final FMLServerStartingEvent event) { event.registerServerCommand(new CommandMath()); - - //Chunk Loading - Timer h = ChunkManager.createChunkQueue(); - - } @Mod.EventHandler @@ -188,7 +177,7 @@ public class GTplusplus implements ActionListener { //Chunkload Handler if (ChunkManager.mChunkLoaderManagerMap.size() > 0) { Logger.INFO("Clearing Chunk Loaders."); - ChunkManager.mChunkLoaderManagerMap.clear(); + ChunkManager.clearInternalMaps(); } } diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java index bf080424ea..77839b9ff2 100644 --- a/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java @@ -14,6 +14,8 @@ import java.util.concurrent.ConcurrentHashMap; import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.ListMultimap; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; @@ -32,6 +34,7 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.ReverseAutoMap; import gtPlusPlus.api.objects.data.Triplet; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.*; @@ -43,45 +46,55 @@ import net.minecraftforge.event.entity.EntityEvent; public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, ForgeChunkManager.PlayerOrderedLoadingCallback { private static final ChunkManager instance; - private static volatile long mInternalTickCounter = 0; private static ReverseAutoMap<String> mIdToUUIDMap = new ReverseAutoMap<String>(); - + + public Timer mChunkQueue; public static ConcurrentHashMap<String, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>> mChunkLoaderManagerMap = new ConcurrentHashMap<String, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>>(); + private static long mInternalTickCounter = 0; - - static { instance = new ChunkManager(); + Logger.REFLECTION("Created ChunkManager object."); } - public ChunkManager() { + private ChunkManager() { Utils.registerEvent(this); } + public static void clearInternalMaps() { + mIdToUUIDMap.clear(); + mChunkLoaderManagerMap.clear(); + } + public static boolean setIdAndUniqueString(int id, String blockposString) { if (mIdToUUIDMap.injectCleanDataToAutoMap(id, blockposString)) { Logger.INFO("Found Cached ID from NBT, cleanly injected into ChunkManager."); return true; } else { - Logger.INFO("Creating new Cached ID based on blockpos UID"); - if (mIdToUUIDMap.injectCleanDataToAutoMap(mIdToUUIDMap.getNextFreeMapID(), blockposString)) { - Logger.INFO("Success! Cleanly injected into ChunkManager."); - return true; + Logger.INFO("ID in use, best try a few times to get a free ID."); + for (int u=0;u<mIdToUUIDMap.size()+1;u++) { + if (mIdToUUIDMap.injectCleanDataToAutoMap(u, blockposString)) { + Logger.INFO("Success! Cleanly injected into ChunkManager."); + return true; + } } - else { - return false; + for (int u=0;u<50;u++) { + if (mIdToUUIDMap.injectCleanDataToAutoMap(MathUtils.randInt(0, 250000), blockposString)) { + Logger.INFO("Success! Cleanly injected into ChunkManager."); + return true; + } } + return false; + } } public static int getIdFromUniqueString(String blockposString) { if (mIdToUUIDMap.containsValue(blockposString)) { - Logger.INFO("Found Cached ID based on blockpos UID"); return mIdToUUIDMap.get(blockposString); } else { - Logger.INFO("Creating new Cached ID based on blockpos UID"); return mIdToUUIDMap.putToInternalMap(blockposString); } } @@ -95,9 +108,14 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo } } + @EventHandler + public void serverStarting(final FMLServerStartingEvent event) { + //Chunk Loading + ChunkManager.getInstance().mChunkQueue = ChunkManager.createChunkQueue(); + } @SubscribeEvent - public void serverTick(TickEvent.ServerTickEvent e){ + public void serverTick(final TickEvent.ServerTickEvent e){ mInternalTickCounter++; try { if (mInternalTickCounter % (20*15) == 0) { @@ -410,7 +428,8 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo static Timer ChunkTimerLoader() { Timer timer; timer = new Timer(); - timer.schedule(new ChunkCache(), 10 * 1000); + timer.schedule(new ChunkCache(), 20 * 500); + timer.scheduleAtFixedRate(new ChunkCache(), 15000, 60000); return timer; } @@ -429,7 +448,7 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo T = j.getValue_2().getTicketFromForge(); C = j.getValue_3().getChunk(); ForgeChunkManager.forceChunk(T, C.getChunkCoordIntPair()); - Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader."); + Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader. [Timer]"); } } else { diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java index 8ffa260261..ef1dd0e353 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java @@ -44,15 +44,17 @@ extends RenderPlayer { public synchronized void receiveRenderSpecialsEvent(RenderPlayerEvent.Specials.Pre aEvent) { AbstractClientPlayer aPlayer = (AbstractClientPlayer) aEvent.entityPlayer; ResourceLocation tResource = null; - if (cachedResource != null) { - tResource = cachedResource; - } - else { - String mTemp = ""; - //Make sure we don't keep checking on clients who dont have capes. - if (!hasResourceChecked) { - //Only run once. + + + //Make sure we don't keep checking on clients who dont have capes. + if (!hasResourceChecked) { + //Give Devs Dev capes. + if (CORE.DEVENV) { + cachedResource = this.mCapes[4]; hasResourceChecked = true; + } + else { + String mTemp = ""; //If list's have not been built yet for some reason, we best do it now. if (mDevCapes.size() <= 1) { BuildCapeList(); @@ -61,40 +63,47 @@ extends RenderPlayer { //Iterates all players in all lists, caches result. for (Pair<String, String> mName : mOrangeCapes){ mTemp = getPlayerName(mName.getKey(), mName.getValue()); + mCapeList.add(mTemp); if (mTemp.toLowerCase().contains(aPlayer.getDisplayName().toLowerCase())) { tResource = this.mCapes[0]; } } for (Pair<String, String> mName : mMiscCapes){ mTemp = getPlayerName(mName.getKey(), mName.getValue()); + mCapeList.add(mTemp); if (mTemp.toLowerCase().contains(aPlayer.getDisplayName().toLowerCase())) { tResource = this.mCapes[1]; } } for (Pair<String, String> mName : mBetaTestCapes){ mTemp = getPlayerName(mName.getKey(), mName.getValue()); + mCapeList.add(mTemp); if (mTemp.toLowerCase().contains(aPlayer.getDisplayName().toLowerCase())) { tResource = this.mCapes[2]; } } for (Pair<String, String> mName : mDevCapes){ mTemp = getPlayerName(mName.getKey(), mName.getValue()); + mCapeList.add(mTemp); if (mTemp.toLowerCase().contains(aPlayer.getDisplayName().toLowerCase())) { tResource = this.mCapes[3]; } } for (Pair<String, String> mName : mPatreonCapes){ mTemp = getPlayerName(mName.getKey(), mName.getValue()); + mCapeList.add(mTemp); if (mTemp.toLowerCase().contains(aPlayer.getDisplayName().toLowerCase())) { tResource = this.mCapes[4]; } - } - if (tResource != null) { - cachedResource = tResource; - } - } - } + } + } + if (tResource != null) { + cachedResource = tResource; + } + //Only run once. + hasResourceChecked = true; + } if (GT_Utility.getFullInvisibility(aPlayer) || aPlayer.isInvisible() || GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) { aEvent.setCanceled(true); @@ -103,16 +112,8 @@ extends RenderPlayer { float aPartialTicks = aEvent.partialRenderTick; try { - - /*if (CORE.DEVENV) { - tResource = this.mCapes[3]; - }*/ - - /*if (this.mCapeList.contains(aPlayer.getDisplayName().toLowerCase())) { - tResource = this.mCapes[0]; - }*/ - if ((tResource != null) && (!aPlayer.getHideCape())) { - bindTexture(tResource); + if ((cachedResource != null) && (!aPlayer.getHideCape())) { + bindTexture(cachedResource); GL11.glPushMatrix(); GL11.glTranslatef(0.0F, 0.0F, 0.125F); double d0 = aPlayer.field_71091_bM + (aPlayer.field_71094_bP - aPlayer.field_71091_bM) * aPartialTicks - (aPlayer.prevPosX + (aPlayer.posX - aPlayer.prevPosX) * aPartialTicks); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java index 49901e57bc..8decbd6a91 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java @@ -268,12 +268,14 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM if (this.getBaseMetaTileEntity() != null && this.getBaseMetaTileEntity().getWorld() != null && this.getBaseMetaTileEntity().getWorld().getWorldTime() >= 100) { if (mChunkLoaderMapID == -1) { this.mChunkLoaderMapID = ChunkManager.getIdFromUniqueString(getUniqueID()); - Logger.INFO("["+getUniqueID()+"] Adjusted Chunk Loaders ID from -1 to "+mChunkLoaderMapID+". This chunk loader is not registered to the global list yet."); + Logger.INFO("["+getUniqueID()+"] Adjusted Chunk Loaders ID to "+mChunkLoaderMapID+". This chunk loader is not registered to the global list yet."); } else { Logger.INFO("["+getUniqueID()+"] Found cached ID - "+mChunkLoaderMapID); ChunkManager.setIdAndUniqueString(this.mChunkLoaderMapID, getUniqueID()); - this.mChunkLoaderMapID = ChunkManager.getIdFromUniqueString(getUniqueID()); // Just Incase the ID gets shifted. + // Just Incase the ID gets shifted. + if (this.mChunkLoaderMapID != ChunkManager.getIdFromUniqueString(getUniqueID())) + this.mChunkLoaderMapID = ChunkManager.getIdFromUniqueString(getUniqueID()); } if (this != null && this.getBaseMetaTileEntity() != null) { if (!isRegistered() && !getUniqueID().equalsIgnoreCase("0@0@0@0")) { |