use of micdoodle8.mods.galacticraft.core.wrappers.Footprint in project Galacticraft by micdoodle8.
the class FootprintRenderer method addFootprint.
public static void addFootprint(long chunkKey, Footprint footprint) {
List<Footprint> footprintList = footprints.get(chunkKey);
if (footprintList == null) {
footprintList = new ArrayList<Footprint>();
}
footprintList.add(new Footprint(footprint.dimension, footprint.position, footprint.rotation, footprint.owner));
footprints.put(chunkKey, footprintList);
}
use of micdoodle8.mods.galacticraft.core.wrappers.Footprint in project Galacticraft by micdoodle8.
the class PacketSimple method handleClientSide.
@SideOnly(Side.CLIENT)
@Override
public void handleClientSide(EntityPlayer player) {
EntityPlayerSP playerBaseClient = null;
GCPlayerStatsClient stats = null;
if (player instanceof EntityPlayerSP) {
playerBaseClient = (EntityPlayerSP) player;
stats = GCPlayerStatsClient.get(playerBaseClient);
} else {
if (type != EnumSimplePacket.C_UPDATE_SPACESTATION_LIST && type != EnumSimplePacket.C_UPDATE_PLANETS_LIST && type != EnumSimplePacket.C_UPDATE_CONFIGS) {
return;
}
}
switch(this.type) {
case C_AIR_REMAINING:
if (String.valueOf(this.data.get(2)).equals(String.valueOf(PlayerUtil.getName(player)))) {
TickHandlerClient.airRemaining = (Integer) this.data.get(0);
TickHandlerClient.airRemaining2 = (Integer) this.data.get(1);
}
break;
case C_UPDATE_DIMENSION_LIST:
if (String.valueOf(this.data.get(0)).equals(PlayerUtil.getName(player))) {
String dimensionList = (String) this.data.get(1);
if (ConfigManagerCore.enableDebug) {
if (!dimensionList.equals(PacketSimple.spamCheckString)) {
GCLog.info("DEBUG info: " + dimensionList);
PacketSimple.spamCheckString = dimensionList;
}
}
final String[] destinations = dimensionList.split("\\?");
List<CelestialBody> possibleCelestialBodies = Lists.newArrayList();
Map<Integer, Map<String, GuiCelestialSelection.StationDataGUI>> spaceStationData = Maps.newHashMap();
for (String str : destinations) {
CelestialBody celestialBody = WorldUtil.getReachableCelestialBodiesForName(str);
if (celestialBody == null && str.contains("$")) {
String[] values = str.split("\\$");
int homePlanetID = Integer.parseInt(values[4]);
for (Satellite satellite : GalaxyRegistry.getRegisteredSatellites().values()) {
if (satellite.getParentPlanet().getDimensionID() == homePlanetID) {
celestialBody = satellite;
break;
}
}
if (!spaceStationData.containsKey(homePlanetID)) {
spaceStationData.put(homePlanetID, new HashMap<String, GuiCelestialSelection.StationDataGUI>());
}
spaceStationData.get(homePlanetID).put(values[1], new GuiCelestialSelection.StationDataGUI(values[2], Integer.parseInt(values[3])));
// spaceStationNames.put(values[1], values[2]);
// spaceStationIDs.put(values[1], Integer.parseInt(values[3]));
// spaceStationHomes.put(values[1], Integer.parseInt(values[4]));
}
if (celestialBody != null) {
possibleCelestialBodies.add(celestialBody);
}
}
if (FMLClientHandler.instance().getClient().theWorld != null) {
if (!(FMLClientHandler.instance().getClient().currentScreen instanceof GuiCelestialSelection)) {
GuiCelestialSelection gui = new GuiCelestialSelection(false, possibleCelestialBodies);
gui.spaceStationMap = spaceStationData;
// gui.spaceStationNames = spaceStationNames;
// gui.spaceStationIDs = spaceStationIDs;
FMLClientHandler.instance().getClient().displayGuiScreen(gui);
} else {
((GuiCelestialSelection) FMLClientHandler.instance().getClient().currentScreen).possibleBodies = possibleCelestialBodies;
((GuiCelestialSelection) FMLClientHandler.instance().getClient().currentScreen).spaceStationMap = spaceStationData;
// ((GuiCelestialSelection) FMLClientHandler.instance().getClient().currentScreen).spaceStationNames = spaceStationNames;
// ((GuiCelestialSelection) FMLClientHandler.instance().getClient().currentScreen).spaceStationIDs = spaceStationIDs;
}
}
}
break;
case C_SPAWN_SPARK_PARTICLES:
BlockPos pos = (BlockPos) this.data.get(0);
Minecraft mc = Minecraft.getMinecraft();
for (int i = 0; i < 4; i++) {
if (mc != null && mc.getRenderViewEntity() != null && mc.effectRenderer != null && mc.theWorld != null) {
final EntityFX fx = new EntityFXSparks(mc.theWorld, pos.getX() - 0.15 + 0.5, pos.getY() + 1.2, pos.getZ() + 0.15 + 0.5, mc.theWorld.rand.nextDouble() / 20 - mc.theWorld.rand.nextDouble() / 20, mc.theWorld.rand.nextDouble() / 20 - mc.theWorld.rand.nextDouble() / 20);
if (fx != null) {
mc.effectRenderer.addEffect(fx);
}
}
}
break;
case C_UPDATE_GEAR_SLOT:
int subtype = (Integer) this.data.get(3);
String gearName = (String) this.data.get(0);
EntityPlayer gearDataPlayer = player.worldObj.getPlayerEntityByName(gearName);
if (gearDataPlayer != null) {
PlayerGearData gearData = ClientProxyCore.playerItemData.get(PlayerUtil.getName(gearDataPlayer));
if (gearData == null) {
gearData = new PlayerGearData(player);
if (!ClientProxyCore.gearDataRequests.contains(gearName)) {
GalacticraftCore.packetPipeline.sendToServer(new PacketSimple(PacketSimple.EnumSimplePacket.S_REQUEST_GEAR_DATA, getDimensionID(), new Object[] { gearName }));
ClientProxyCore.gearDataRequests.add(gearName);
}
} else {
ClientProxyCore.gearDataRequests.remove(gearName);
}
EnumExtendedInventorySlot type = EnumExtendedInventorySlot.values()[(Integer) this.data.get(2)];
EnumModelPacketType typeChange = EnumModelPacketType.values()[(Integer) this.data.get(1)];
switch(type) {
case MASK:
gearData.setMask(subtype);
break;
case GEAR:
gearData.setGear(subtype);
break;
case LEFT_TANK:
gearData.setLeftTank(subtype);
break;
case RIGHT_TANK:
gearData.setRightTank(subtype);
break;
case PARACHUTE:
if (typeChange == EnumModelPacketType.ADD) {
String name;
if (subtype != -1) {
name = ItemParaChute.names[subtype];
gearData.setParachute(new ResourceLocation(Constants.ASSET_PREFIX, "textures/model/parachute/" + name + ".png"));
}
} else {
gearData.setParachute(null);
}
break;
case FREQUENCY_MODULE:
gearData.setFrequencyModule(subtype);
break;
case THERMAL_HELMET:
gearData.setThermalPadding(0, subtype);
break;
case THERMAL_CHESTPLATE:
gearData.setThermalPadding(1, subtype);
break;
case THERMAL_LEGGINGS:
gearData.setThermalPadding(2, subtype);
break;
case THERMAL_BOOTS:
gearData.setThermalPadding(3, subtype);
break;
case SHIELD_CONTROLLER:
gearData.setShieldController(subtype);
break;
default:
break;
}
ClientProxyCore.playerItemData.put(gearName, gearData);
}
break;
case C_CLOSE_GUI:
FMLClientHandler.instance().getClient().displayGuiScreen(null);
break;
case C_RESET_THIRD_PERSON:
FMLClientHandler.instance().getClient().gameSettings.thirdPersonView = stats.getThirdPersonView();
break;
case C_UPDATE_SPACESTATION_LIST:
WorldUtil.decodeSpaceStationListClient(data);
break;
case C_UPDATE_SPACESTATION_DATA:
SpaceStationWorldData var4 = SpaceStationWorldData.getMPSpaceStationData(player.worldObj, (Integer) this.data.get(0), player);
var4.readFromNBT((NBTTagCompound) this.data.get(1));
break;
case C_UPDATE_SPACESTATION_CLIENT_ID:
ClientProxyCore.clientSpaceStationID = WorldUtil.stringToSpaceStationData((String) this.data.get(0));
break;
case C_UPDATE_PLANETS_LIST:
WorldUtil.decodePlanetsListClient(data);
break;
case C_UPDATE_CONFIGS:
ConfigManagerCore.saveClientConfigOverrideable();
ConfigManagerCore.setConfigOverride(data);
break;
case C_ADD_NEW_SCHEMATIC:
final ISchematicPage page = SchematicRegistry.getMatchingRecipeForID((Integer) this.data.get(0));
if (!stats.getUnlockedSchematics().contains(page)) {
stats.getUnlockedSchematics().add(page);
}
break;
case C_UPDATE_SCHEMATIC_LIST:
for (Object o : this.data) {
Integer schematicID = (Integer) o;
if (schematicID != -2) {
Collections.sort(stats.getUnlockedSchematics());
if (!stats.getUnlockedSchematics().contains(SchematicRegistry.getMatchingRecipeForID(schematicID))) {
stats.getUnlockedSchematics().add(SchematicRegistry.getMatchingRecipeForID(schematicID));
}
}
}
break;
case C_PLAY_SOUND_BOSS_DEATH:
player.playSound(Constants.TEXTURE_PREFIX + "entity.bossdeath", 10.0F, (Float) this.data.get(0));
break;
case C_PLAY_SOUND_EXPLODE:
player.playSound("random.explode", 10.0F, 0.7F);
break;
case C_PLAY_SOUND_BOSS_LAUGH:
player.playSound(Constants.TEXTURE_PREFIX + "entity.bosslaugh", 10.0F, 1.1F);
break;
case C_PLAY_SOUND_BOW:
player.playSound("random.bow", 10.0F, 0.2F);
break;
case C_UPDATE_OXYGEN_VALIDITY:
stats.setOxygenSetupValid((Boolean) this.data.get(0));
break;
case C_OPEN_PARACHEST_GUI:
switch((Integer) this.data.get(1)) {
case 0:
if (player.ridingEntity instanceof EntityBuggy) {
FMLClientHandler.instance().getClient().displayGuiScreen(new GuiBuggy(player.inventory, (EntityBuggy) player.ridingEntity, ((EntityBuggy) player.ridingEntity).getType()));
player.openContainer.windowId = (Integer) this.data.get(0);
}
break;
case 1:
int entityID = (Integer) this.data.get(2);
Entity entity = player.worldObj.getEntityByID(entityID);
if (entity != null && entity instanceof IInventorySettable) {
FMLClientHandler.instance().getClient().displayGuiScreen(new GuiParaChest(player.inventory, (IInventorySettable) entity));
}
player.openContainer.windowId = (Integer) this.data.get(0);
break;
}
break;
case C_UPDATE_WIRE_BOUNDS:
TileEntity tile = player.worldObj.getTileEntity((BlockPos) this.data.get(0));
if (tile instanceof TileBaseConductor) {
((TileBaseConductor) tile).adjacentConnections = null;
player.worldObj.getBlockState(tile.getPos()).getBlock().setBlockBoundsBasedOnState(player.worldObj, tile.getPos());
}
break;
case C_OPEN_SPACE_RACE_GUI:
if (Minecraft.getMinecraft().currentScreen == null) {
TickHandlerClient.spaceRaceGuiScheduled = false;
player.openGui(GalacticraftCore.instance, GuiIdsCore.SPACE_RACE_START, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ);
} else {
TickHandlerClient.spaceRaceGuiScheduled = true;
}
break;
case C_UPDATE_SPACE_RACE_DATA:
Integer teamID = (Integer) this.data.get(0);
String teamName = (String) this.data.get(1);
FlagData flagData = (FlagData) this.data.get(2);
Vector3 teamColor = (Vector3) this.data.get(3);
List<String> playerList = new ArrayList<String>();
for (int i = 4; i < this.data.size(); i++) {
String playerName = (String) this.data.get(i);
ClientProxyCore.flagRequestsSent.remove(playerName);
playerList.add(playerName);
}
SpaceRace race = new SpaceRace(playerList, teamName, flagData, teamColor);
race.setSpaceRaceID(teamID);
SpaceRaceManager.addSpaceRace(race);
break;
case C_OPEN_JOIN_RACE_GUI:
stats.setSpaceRaceInviteTeamID((Integer) this.data.get(0));
player.openGui(GalacticraftCore.instance, GuiIdsCore.SPACE_RACE_JOIN, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ);
break;
case C_UPDATE_DUNGEON_DIRECTION:
stats.setDungeonDirection((Float) this.data.get(0));
break;
case C_UPDATE_FOOTPRINT_LIST:
List<Footprint> printList = new ArrayList<Footprint>();
long chunkKey = (Long) this.data.get(0);
for (int i = 1; i < this.data.size(); i++) {
Footprint print = (Footprint) this.data.get(i);
if (!print.owner.equals(player.getName())) {
printList.add(print);
}
}
FootprintRenderer.setFootprints(chunkKey, printList);
break;
case C_FOOTPRINTS_REMOVED:
long chunkKey0 = (Long) this.data.get(0);
BlockVec3 position = (BlockVec3) this.data.get(1);
List<Footprint> footprintList = FootprintRenderer.footprints.get(chunkKey0);
List<Footprint> toRemove = new ArrayList<Footprint>();
if (footprintList != null) {
for (Footprint footprint : footprintList) {
if (footprint.position.x > position.x && footprint.position.x < position.x + 1 && footprint.position.z > position.z && footprint.position.z < position.z + 1) {
toRemove.add(footprint);
}
}
}
if (!toRemove.isEmpty()) {
footprintList.removeAll(toRemove);
FootprintRenderer.footprints.put(chunkKey0, footprintList);
}
break;
case C_UPDATE_STATION_SPIN:
if (playerBaseClient.worldObj.provider instanceof WorldProviderSpaceStation) {
((WorldProviderSpaceStation) playerBaseClient.worldObj.provider).getSpinManager().setSpinRate((Float) this.data.get(0), (Boolean) this.data.get(1));
}
break;
case C_UPDATE_STATION_DATA:
if (playerBaseClient.worldObj.provider instanceof WorldProviderSpaceStation) {
((WorldProviderSpaceStation) playerBaseClient.worldObj.provider).getSpinManager().setSpinCentre((Double) this.data.get(0), (Double) this.data.get(1));
}
break;
case C_UPDATE_STATION_BOX:
if (playerBaseClient.worldObj.provider instanceof WorldProviderSpaceStation) {
((WorldProviderSpaceStation) playerBaseClient.worldObj.provider).getSpinManager().setSpinBox((Integer) this.data.get(0), (Integer) this.data.get(1), (Integer) this.data.get(2), (Integer) this.data.get(3), (Integer) this.data.get(4), (Integer) this.data.get(5));
}
break;
case C_UPDATE_THERMAL_LEVEL:
stats.setThermalLevel((Integer) this.data.get(0));
stats.setThermalLevelNormalising((Boolean) this.data.get(1));
break;
case C_DISPLAY_ROCKET_CONTROLS:
player.addChatMessage(new ChatComponentText(GameSettings.getKeyDisplayString(KeyHandlerClient.spaceKey.getKeyCode()) + " - " + GCCoreUtil.translate("gui.rocket.launch.name")));
player.addChatMessage(new ChatComponentText(GameSettings.getKeyDisplayString(KeyHandlerClient.leftKey.getKeyCode()) + " / " + GameSettings.getKeyDisplayString(KeyHandlerClient.rightKey.getKeyCode()) + " - " + GCCoreUtil.translate("gui.rocket.turn.name")));
player.addChatMessage(new ChatComponentText(GameSettings.getKeyDisplayString(KeyHandlerClient.accelerateKey.getKeyCode()) + " / " + GameSettings.getKeyDisplayString(KeyHandlerClient.decelerateKey.getKeyCode()) + " - " + GCCoreUtil.translate("gui.rocket.updown.name")));
player.addChatMessage(new ChatComponentText(GameSettings.getKeyDisplayString(KeyHandlerClient.openFuelGui.getKeyCode()) + " - " + GCCoreUtil.translate("gui.rocket.inv.name")));
break;
case C_GET_CELESTIAL_BODY_LIST:
String str = "";
for (CelestialBody cBody : GalaxyRegistry.getRegisteredPlanets().values()) {
str = str.concat(cBody.getUnlocalizedName() + ";");
}
for (CelestialBody cBody : GalaxyRegistry.getRegisteredMoons().values()) {
str = str.concat(cBody.getUnlocalizedName() + ";");
}
for (CelestialBody cBody : GalaxyRegistry.getRegisteredSatellites().values()) {
str = str.concat(cBody.getUnlocalizedName() + ";");
}
for (SolarSystem solarSystem : GalaxyRegistry.getRegisteredSolarSystems().values()) {
str = str.concat(solarSystem.getUnlocalizedName() + ";");
}
GalacticraftCore.packetPipeline.sendToServer(new PacketSimple(EnumSimplePacket.S_COMPLETE_CBODY_HANDSHAKE, getDimensionID(), new Object[] { str }));
break;
case C_UPDATE_ENERGYUNITS:
CommandGCEnergyUnits.handleParamClientside((Integer) this.data.get(0));
break;
case C_RESPAWN_PLAYER:
final WorldProvider provider = WorldUtil.getProviderForNameClient((String) this.data.get(0));
final int dimID = GCCoreUtil.getDimensionID(provider);
if (ConfigManagerCore.enableDebug) {
GCLog.info("DEBUG: Client receiving respawn packet for dim " + dimID);
}
int par2 = (Integer) this.data.get(1);
String par3 = (String) this.data.get(2);
int par4 = (Integer) this.data.get(3);
WorldUtil.forceRespawnClient(dimID, par2, par3, par4);
break;
case C_UPDATE_STATS:
stats.setBuildFlags((Integer) this.data.get(0));
BlockPanelLighting.updateClient(this.data);
break;
case C_UPDATE_TELEMETRY:
tile = player.worldObj.getTileEntity((BlockPos) this.data.get(0));
if (tile instanceof TileEntityTelemetry) {
((TileEntityTelemetry) tile).receiveUpdate(data, this.getDimensionID());
}
break;
case C_SEND_PLAYERSKIN:
String strName = (String) this.data.get(0);
String s1 = (String) this.data.get(1);
String s2 = (String) this.data.get(2);
String strUUID = (String) this.data.get(3);
GameProfile gp = PlayerUtil.getOtherPlayerProfile(strName);
if (gp == null) {
gp = PlayerUtil.makeOtherPlayerProfile(strName, strUUID);
}
gp.getProperties().put("textures", new Property("textures", s1, s2));
break;
case C_SEND_OVERWORLD_IMAGE:
try {
int cx = (Integer) this.data.get(0);
int cz = (Integer) this.data.get(1);
byte[] bytes = (byte[]) this.data.get(2);
MapUtil.receiveOverworldImageCompressed(cx, cz, bytes);
} catch (Exception e) {
e.printStackTrace();
}
break;
case C_RECOLOR_PIPE:
TileEntity tileEntity = player.worldObj.getTileEntity((BlockPos) this.data.get(0));
if (tileEntity instanceof TileEntityFluidPipe) {
TileEntityFluidPipe pipe = (TileEntityFluidPipe) tileEntity;
pipe.getNetwork().split(pipe);
pipe.setNetwork(null);
}
break;
case C_RECOLOR_ALL_GLASS:
BlockSpaceGlass.updateGlassColors((Integer) this.data.get(0), (Integer) this.data.get(1), (Integer) this.data.get(2));
break;
case C_UPDATE_MACHINE_DATA:
TileEntity tile3 = player.worldObj.getTileEntity((BlockPos) this.data.get(0));
if (tile3 instanceof ITileClientUpdates) {
((ITileClientUpdates) tile3).updateClient(this.data);
}
break;
case C_LEAK_DATA:
TileEntity tile4 = player.worldObj.getTileEntity((BlockPos) this.data.get(0));
if (tile4 instanceof TileEntityOxygenSealer) {
((ITileClientUpdates) tile4).updateClient(this.data);
}
break;
case C_SPAWN_HANGING_SCHEMATIC:
EntityHangingSchematic entity = new EntityHangingSchematic(player.worldObj, (BlockPos) this.data.get(0), EnumFacing.getFront((Integer) this.data.get(2)), (Integer) this.data.get(3));
((WorldClient) player.worldObj).addEntityToWorld((Integer) this.data.get(1), entity);
break;
default:
break;
}
}
use of micdoodle8.mods.galacticraft.core.wrappers.Footprint in project Galacticraft by micdoodle8.
the class TickHandlerClient method onClientTick.
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onClientTick(ClientTickEvent event) {
final Minecraft minecraft = FMLClientHandler.instance().getClient();
final WorldClient world = minecraft.theWorld;
final EntityPlayerSP player = minecraft.thePlayer;
if (teleportingGui != null) {
if (minecraft.currentScreen != teleportingGui) {
minecraft.currentScreen = teleportingGui;
}
}
if (menuReset) {
TickHandlerClient.resetClient();
menuReset = false;
}
if (event.phase == Phase.START && player != null) {
if (ClientProxyCore.playerHead == null && player.getGameProfile() != null) {
Map<Type, MinecraftProfileTexture> map = minecraft.getSkinManager().loadSkinFromCache(player.getGameProfile());
if (map.containsKey(Type.SKIN)) {
ClientProxyCore.playerHead = minecraft.getSkinManager().loadSkin((MinecraftProfileTexture) map.get(Type.SKIN), Type.SKIN);
} else {
ClientProxyCore.playerHead = DefaultPlayerSkin.getDefaultSkin(EntityPlayer.getUUID(player.getGameProfile()));
}
}
TickHandlerClient.tickCount++;
if (!GalacticraftCore.proxy.isPaused()) {
Iterator<FluidNetwork> it = TickHandlerClient.fluidNetworks.iterator();
while (it.hasNext()) {
FluidNetwork network = it.next();
if (network.getTransmitters().size() == 0) {
it.remove();
} else {
network.clientTick();
}
}
}
if (TickHandlerClient.tickCount % 20 == 0) {
if (updateJEIhiding) {
updateJEIhiding = false;
if (CompressorRecipes.steelIngotsPresent) {
// Update JEI to hide the ingot compressor recipe for GC steel in hard mode
GalacticraftJEI.updateHiddenSteel(ConfigManagerCore.hardMode && !ConfigManagerCore.challengeRecipes);
}
// Update JEI to hide adventure mode recipes when not in adventure mode
GalacticraftJEI.updateHiddenAdventure(!ConfigManagerCore.challengeRecipes);
}
for (List<Footprint> fpList : FootprintRenderer.footprints.values()) {
Iterator<Footprint> fpIt = fpList.iterator();
while (fpIt.hasNext()) {
Footprint fp = fpIt.next();
fp.age += 20;
if (fp.age >= Footprint.MAX_AGE) {
fpIt.remove();
}
}
}
if (player.inventory.armorItemInSlot(3) != null && player.inventory.armorItemInSlot(3).getItem() instanceof ItemSensorGlasses) {
ClientProxyCore.valueableBlocks.clear();
for (int i = -4; i < 5; i++) {
int x = MathHelper.floor_double(player.posX + i);
for (int j = -4; j < 5; j++) {
int y = MathHelper.floor_double(player.posY + j);
for (int k = -4; k < 5; k++) {
int z = MathHelper.floor_double(player.posZ + k);
BlockPos pos = new BlockPos(x, y, z);
IBlockState state = player.worldObj.getBlockState(pos);
final Block block = state.getBlock();
if (block.getMaterial() != Material.air) {
int metadata = block.getMetaFromState(state);
boolean isDetectable = false;
for (BlockMetaList blockMetaList : ClientProxyCore.detectableBlocks) {
if (blockMetaList.getBlock() == block && blockMetaList.getMetaList().contains(metadata)) {
isDetectable = true;
break;
}
}
if (isDetectable || (block instanceof IDetectableResource && ((IDetectableResource) block).isValueable(state))) {
ClientProxyCore.valueableBlocks.add(new BlockVec3(x, y, z));
}
}
}
}
}
TileEntityOxygenSealer nearestSealer = TileEntityOxygenSealer.getNearestSealer(world, MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ));
if (nearestSealer != null && !nearestSealer.sealed) {
ClientProxyCore.leakTrace = nearestSealer.getLeakTraceClient();
} else {
ClientProxyCore.leakTrace = null;
}
} else {
ClientProxyCore.leakTrace = null;
}
if (world != null) {
if (MapUtil.resetClientFlag.getAndSet(false)) {
MapUtil.resetClientBody();
}
}
}
if (ClientProxyCore.leakTrace != null)
this.spawnLeakParticles();
if (world != null && TickHandlerClient.spaceRaceGuiScheduled && minecraft.currentScreen == null && ConfigManagerCore.enableSpaceRaceManagerPopup) {
player.openGui(GalacticraftCore.instance, GuiIdsCore.SPACE_RACE_START, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ);
TickHandlerClient.spaceRaceGuiScheduled = false;
}
if (world != null && TickHandlerClient.checkedVersion) {
ThreadVersionCheck.startCheck();
TickHandlerClient.checkedVersion = false;
}
boolean inSpaceShip = false;
if (player.ridingEntity instanceof EntitySpaceshipBase) {
inSpaceShip = true;
EntitySpaceshipBase rocket = (EntitySpaceshipBase) player.ridingEntity;
if (rocket.prevRotationPitch != rocket.rotationPitch || rocket.prevRotationYaw != rocket.rotationYaw)
GalacticraftCore.packetPipeline.sendToServer(new PacketRotateRocket(player.ridingEntity));
}
if (world != null) {
if (world.provider instanceof WorldProviderSurface) {
if (world.provider.getSkyRenderer() == null && inSpaceShip && player.ridingEntity.posY > Constants.OVERWORLD_SKYPROVIDER_STARTHEIGHT) {
world.provider.setSkyRenderer(new SkyProviderOverworld());
} else if (world.provider.getSkyRenderer() instanceof SkyProviderOverworld && player.posY <= Constants.OVERWORLD_SKYPROVIDER_STARTHEIGHT) {
world.provider.setSkyRenderer(null);
}
} else if (world.provider instanceof WorldProviderSpaceStation) {
if (world.provider.getSkyRenderer() == null) {
((WorldProviderSpaceStation) world.provider).createSkyProvider();
}
} else if (world.provider instanceof WorldProviderMoon) {
if (world.provider.getSkyRenderer() == null) {
world.provider.setSkyRenderer(new SkyProviderMoon());
}
if (world.provider.getCloudRenderer() == null) {
world.provider.setCloudRenderer(new CloudRenderer());
}
}
}
if (inSpaceShip) {
final EntitySpaceshipBase ship = (EntitySpaceshipBase) player.ridingEntity;
boolean hasChanged = false;
if (minecraft.gameSettings.keyBindLeft.isKeyDown()) {
ship.turnYaw(-1.0F);
hasChanged = true;
}
if (minecraft.gameSettings.keyBindRight.isKeyDown()) {
ship.turnYaw(1.0F);
hasChanged = true;
}
if (minecraft.gameSettings.keyBindForward.isKeyDown()) {
if (ship.getLaunched()) {
ship.turnPitch(-0.7F);
hasChanged = true;
}
}
if (minecraft.gameSettings.keyBindBack.isKeyDown()) {
if (ship.getLaunched()) {
ship.turnPitch(0.7F);
hasChanged = true;
}
}
if (hasChanged) {
GalacticraftCore.packetPipeline.sendToServer(new PacketRotateRocket(ship));
}
}
if (world != null) {
List entityList = world.loadedEntityList;
for (Object e : entityList) {
if (e instanceof IEntityNoisy) {
IEntityNoisy vehicle = (IEntityNoisy) e;
if (vehicle.getSoundUpdater() == null) {
ISound noise = vehicle.setSoundUpdater(FMLClientHandler.instance().getClient().thePlayer);
if (noise != null) {
FMLClientHandler.instance().getClient().getSoundHandler().playSound(noise);
}
}
}
}
}
if (FMLClientHandler.instance().getClient().currentScreen instanceof GuiCelestialSelection) {
player.motionY = 0;
}
if (world != null && world.provider instanceof IGalacticraftWorldProvider && OxygenUtil.noAtmosphericCombustion(world.provider) && ((IGalacticraftWorldProvider) world.provider).shouldDisablePrecipitation()) {
world.setRainStrength(0.0F);
}
boolean isPressed = KeyHandlerClient.spaceKey.isPressed();
if (!isPressed) {
ClientProxyCore.lastSpacebarDown = false;
}
if (player.ridingEntity != null && isPressed && !ClientProxyCore.lastSpacebarDown) {
GalacticraftCore.packetPipeline.sendToServer(new PacketSimple(EnumSimplePacket.S_IGNITE_ROCKET, GCCoreUtil.getDimensionID(player.worldObj), new Object[] {}));
ClientProxyCore.lastSpacebarDown = true;
}
if (!(this.screenConnectionsUpdateList.isEmpty())) {
HashSet<TileEntityScreen> updateListCopy = (HashSet<TileEntityScreen>) screenConnectionsUpdateList.clone();
screenConnectionsUpdateList.clear();
for (TileEntityScreen te : updateListCopy) {
if (te.getWorld().getBlockState(te.getPos()).getBlock() == GCBlocks.screen) {
if (te.refreshOnUpdate) {
te.refreshConnections(true);
}
te.getWorld().markBlockRangeForRenderUpdate(te.getPos(), te.getPos());
}
}
}
} else if (event.phase == Phase.END) {
if (world != null) {
for (GalacticraftPacketHandler handler : packetHandlers) {
handler.tick(world);
}
}
}
}
use of micdoodle8.mods.galacticraft.core.wrappers.Footprint in project Galacticraft by micdoodle8.
the class NetworkUtil method encodeData.
public static void encodeData(ByteBuf buffer, Collection<Object> sendData) throws IOException {
for (Object dataValue : sendData) {
if (dataValue instanceof Integer) {
buffer.writeInt((Integer) dataValue);
} else if (dataValue instanceof Float) {
buffer.writeFloat((Float) dataValue);
} else if (dataValue instanceof Double) {
buffer.writeDouble((Double) dataValue);
} else if (dataValue instanceof Byte) {
buffer.writeByte((Byte) dataValue);
} else if (dataValue instanceof Boolean) {
buffer.writeBoolean((Boolean) dataValue);
} else if (dataValue instanceof String) {
ByteBufUtils.writeUTF8String(buffer, (String) dataValue);
} else if (dataValue instanceof Short) {
buffer.writeShort((Short) dataValue);
} else if (dataValue instanceof Long) {
buffer.writeLong((Long) dataValue);
} else if (dataValue instanceof EnergyStorage) {
EnergyStorage storage = (EnergyStorage) dataValue;
buffer.writeFloat(storage.getCapacityGC());
buffer.writeFloat(storage.getMaxReceive());
buffer.writeFloat(storage.getMaxExtract());
buffer.writeFloat(storage.getEnergyStoredGC());
} else if (dataValue instanceof NBTTagCompound) {
NetworkUtil.writeNBTTagCompound((NBTTagCompound) dataValue, buffer);
} else if (dataValue instanceof FluidTankGC) {
FluidTankGC tankGC = (FluidTankGC) dataValue;
BlockPos pos = tankGC.getTilePosition();
buffer.writeInt(pos.getX());
buffer.writeInt(pos.getY());
buffer.writeInt(pos.getZ());
NetworkUtil.writeFluidTank((FluidTank) dataValue, buffer);
} else if (dataValue instanceof FluidTank) {
NetworkUtil.writeFluidTank((FluidTank) dataValue, buffer);
} else if (dataValue instanceof Entity) {
buffer.writeInt(((Entity) dataValue).getEntityId());
} else if (dataValue instanceof Vector3) {
buffer.writeDouble(((Vector3) dataValue).x);
buffer.writeDouble(((Vector3) dataValue).y);
buffer.writeDouble(((Vector3) dataValue).z);
} else if (dataValue instanceof BlockVec3) {
buffer.writeInt(((BlockVec3) dataValue).x);
buffer.writeInt(((BlockVec3) dataValue).y);
buffer.writeInt(((BlockVec3) dataValue).z);
} else if (dataValue instanceof byte[]) {
int size = ((byte[]) dataValue).length;
buffer.writeInt(size);
int pos = buffer.writerIndex();
buffer.capacity(pos + size);
buffer.setBytes(pos, (byte[]) dataValue);
buffer.writerIndex(pos + size);
} else if (dataValue instanceof UUID) {
buffer.writeLong(((UUID) dataValue).getLeastSignificantBits());
buffer.writeLong(((UUID) dataValue).getMostSignificantBits());
} else if (dataValue instanceof Collection) {
NetworkUtil.encodeData(buffer, (Collection<Object>) dataValue);
} else if (dataValue instanceof FlagData) {
buffer.writeInt(((FlagData) dataValue).getWidth());
buffer.writeInt(((FlagData) dataValue).getHeight());
for (int i = 0; i < ((FlagData) dataValue).getWidth(); i++) {
for (int j = 0; j < ((FlagData) dataValue).getHeight(); j++) {
Vector3 vec = ((FlagData) dataValue).getColorAt(i, j);
buffer.writeByte((byte) (vec.x * 256 - 128));
buffer.writeByte((byte) (vec.y * 256 - 128));
buffer.writeByte((byte) (vec.z * 256 - 128));
}
}
} else if (dataValue instanceof Integer[]) {
Integer[] array = (Integer[]) dataValue;
buffer.writeInt(array.length);
for (int i = 0; i < array.length; i++) {
buffer.writeInt(array[i]);
}
} else if (dataValue instanceof String[]) {
String[] array = (String[]) dataValue;
buffer.writeInt(array.length);
for (int i = 0; i < array.length; i++) {
ByteBufUtils.writeUTF8String(buffer, array[i]);
}
} else if (dataValue instanceof Footprint[]) {
Footprint[] array = (Footprint[]) dataValue;
buffer.writeInt(array.length);
for (int i = 0; i < array.length; i++) {
buffer.writeInt(array[i].dimension);
buffer.writeFloat((float) array[i].position.x);
buffer.writeFloat((float) array[i].position.y + 1);
buffer.writeFloat((float) array[i].position.z);
buffer.writeFloat(array[i].rotation);
buffer.writeShort(array[i].age);
ByteBufUtils.writeUTF8String(buffer, array[i].owner);
}
} else if (dataValue instanceof EnumFacing) {
buffer.writeInt(((EnumFacing) dataValue).getIndex());
} else if (dataValue instanceof BlockPos) {
BlockPos pos = (BlockPos) dataValue;
buffer.writeInt(pos.getX());
buffer.writeInt(pos.getY());
buffer.writeInt(pos.getZ());
} else if (dataValue instanceof EnumDyeColor) {
buffer.writeInt(((EnumDyeColor) dataValue).getDyeDamage());
} else {
if (dataValue == null) {
GCLog.severe("Cannot construct PacketSimple with null data, this is a bug.");
}
GCLog.info("Could not find data type to encode!: " + dataValue);
}
}
}
use of micdoodle8.mods.galacticraft.core.wrappers.Footprint in project Galacticraft by micdoodle8.
the class NetworkUtil method decodeData.
public static ArrayList<Object> decodeData(Class<?>[] types, ByteBuf buffer) {
ArrayList<Object> objList = new ArrayList<Object>();
for (Class clazz : types) {
if (clazz.equals(Integer.class)) {
objList.add(buffer.readInt());
} else if (clazz.equals(Float.class)) {
objList.add(buffer.readFloat());
} else if (clazz.equals(Double.class)) {
objList.add(buffer.readDouble());
} else if (clazz.equals(Byte.class)) {
objList.add(buffer.readByte());
} else if (clazz.equals(Boolean.class)) {
objList.add(buffer.readBoolean());
} else if (clazz.equals(String.class)) {
objList.add(ByteBufUtils.readUTF8String(buffer));
} else if (clazz.equals(Short.class)) {
objList.add(buffer.readShort());
} else if (clazz.equals(Long.class)) {
objList.add(buffer.readLong());
} else if (clazz.equals(byte[].class)) {
int size = buffer.readInt();
byte[] bytes = new byte[size];
buffer.readBytes(bytes, 0, size);
objList.add(bytes);
} else if (clazz.equals(EnergyStorage.class)) {
EnergyStorage storage = new EnergyStorage(buffer.readFloat(), buffer.readFloat(), buffer.readFloat());
storage.setEnergyStored(buffer.readFloat());
objList.add(storage);
} else if (clazz.equals(NBTTagCompound.class)) {
try {
objList.add(NetworkUtil.readNBTTagCompound(buffer));
} catch (IOException e) {
e.printStackTrace();
}
} else if (clazz.equals(BlockVec3.class)) {
objList.add(new BlockVec3(buffer.readInt(), buffer.readInt(), buffer.readInt()));
} else if (clazz.equals(UUID.class)) {
objList.add(new UUID(buffer.readLong(), buffer.readLong()));
} else if (clazz.equals(Vector3.class)) {
objList.add(new Vector3(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()));
} else if (clazz.equals(FlagData.class)) {
int width = buffer.readInt();
int height = buffer.readInt();
FlagData flagData = new FlagData(width, height);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
flagData.setColorAt(i, j, new Vector3(buffer.readByte() + 128, buffer.readByte() + 128, buffer.readByte() + 128));
}
}
objList.add(flagData);
} else if (clazz.equals(Integer[].class)) {
int size = buffer.readInt();
for (int i = 0; i < size; i++) {
objList.add(buffer.readInt());
}
} else if (clazz.equals(String[].class)) {
int size = buffer.readInt();
for (int i = 0; i < size; i++) {
objList.add(ByteBufUtils.readUTF8String(buffer));
}
} else if (clazz.equals(Footprint[].class)) {
int size = buffer.readInt();
for (int i = 0; i < size; i++) {
objList.add(new Footprint(buffer.readInt(), new Vector3(buffer.readFloat(), buffer.readFloat(), buffer.readFloat()), buffer.readFloat(), buffer.readShort(), ByteBufUtils.readUTF8String(buffer)));
}
} else if (clazz.equals(EnumFacing.class)) {
objList.add(EnumFacing.getFront(buffer.readInt()));
} else if (clazz.equals(BlockPos.class)) {
objList.add(new BlockPos(buffer.readInt(), buffer.readInt(), buffer.readInt()));
} else if (clazz.equals(EnumDyeColor.class)) {
objList.add(EnumDyeColor.byDyeDamage(buffer.readInt()));
}
}
return objList;
}
Aggregations