@Override protected void process(EntityPlayer player, Side side) { AtlasData atlasData = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.world); DimensionData dimData = atlasData.getDimensionData(dimension); for (TileGroup t : tileGroups) { dimData.putTileGroup(t); } } }
/** Loads data for the given atlas ID or creates a new one. */ public AtlasData getAtlasData(ItemStack stack, World world) { if (stack.getItem() == RegistrarAntiqueAtlas.ATLAS) { return getAtlasData(stack.getItemDamage(), world); } else { return null; } }
@SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData( event.player.getUniqueID().hashCode(), event.player.world); // Updating map around player data.updateMapAroundPlayer(event.player); } }
@SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { EntityPlayer player = event.player; World world = player.world; int atlasID = player.getUniqueID().hashCode(); AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, world); // On the player join send the map from the server to the client: if (!data.isEmpty()) { data.syncOnPlayer(atlasID, player); } // Same thing with the local markers: MarkersData markers = AntiqueAtlasMod.markersData.getMarkersData(atlasID, world); if (!markers.isEmpty()) { markers.syncOnPlayer(atlasID, player); } }
@Override protected void process(EntityPlayer player, Side side) { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.world); for (int i = 0; i < tileCount; i++) { data.getDimensionData(dimension).setTile(tileData.readShort(), tileData.readShort(), new Tile(tileData.readShort())); } } }
@Override @SideOnly(Side.CLIENT) protected void process(EntityPlayer player, Side side) { if (data == null) return; // Atlas is empty AtlasData atlasData = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.getEntityWorld()); atlasData.readFromNBT(data); // GuiAtlas may already be opened at (0, 0) browsing position, force load saved position: if (SettingsConfig.gameplay.doSaveBrowsingPos && Minecraft.getMinecraft().currentScreen instanceof GuiAtlas) { ((GuiAtlas)Minecraft.getMinecraft().currentScreen).loadSavedBrowsingPosition(); } } }
@Override protected void process(EntityPlayer player, Side side) { // Make sure it's this player's atlas :^) if (SettingsConfig.gameplay.itemNeeded && !player.inventory.hasItemStack(new ItemStack(RegistrarAntiqueAtlas.ATLAS, 1, atlasID))) { Log.warn("Player %s attempted to put position marker into someone else's Atlas #%d", player.getGameProfile().getName(), atlasID); return; } AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.getEntityWorld()) .getDimensionData(dimension).setBrowsingPosition(x, y, zoom); }
@Override public void putBiomeTile(World world, int atlasID, int biomeID, int chunkX, int chunkZ) { int dimension = world.provider.getDimension(); PutBiomeTilePacket packet = new PutBiomeTilePacket(atlasID, dimension, chunkX, chunkZ, biomeID); if (world.isRemote) { PacketDispatcher.sendToServer(packet); } else { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, world); Tile tile = new Tile(biomeID); data.setTile(dimension, chunkX, chunkZ, tile); for (EntityPlayer syncedPlayer : data.getSyncedPlayers()) { PacketDispatcher.sendTo(new PutBiomeTilePacket(atlasID, dimension, chunkX, chunkZ, biomeID), (EntityPlayerMP)syncedPlayer); } } }
/** Update {@link #biomeData}, {@link #localMarkersData}, * {@link #globalMarkersData} */ private void updateAtlasData() { int atlasID = getAtlasID(); biomeData = AntiqueAtlasMod.atlasData .getAtlasData(atlasID, player.getEntityWorld()) .getDimensionData(player.dimension); globalMarkersData = AntiqueAtlasMod.globalMarkersData.getData() .getMarkersDataInDimension(player.dimension); MarkersData markersData = AntiqueAtlasMod.markersData .getMarkersData(atlasID, player.getEntityWorld()); if (markersData != null) { localMarkersData = markersData .getMarkersDataInDimension(player.dimension); } else { localMarkersData = null; } }
ItemStack atlasStack = new ItemStack(RegistrarAntiqueAtlas.ATLAS, 1, atlasID); AtlasData atlasData = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, world); atlasData.getDimensionData(player.dimension).setBrowsingPosition( (int)Math.round(-player.posX * SettingsConfig.userInterface.defaultScale),
@Override protected void process(EntityPlayer player, Side side) { if (side.isServer()) { // Make sure it's this player's atlas :^) if (SettingsConfig.gameplay.itemNeeded && !player.inventory.hasItemStack(new ItemStack(RegistrarAntiqueAtlas.ATLAS, 1, atlasID))) { Log.warn("Player %s attempted to modify someone else's Atlas #%d", player.getGameProfile().getName(), atlasID); return; } AtlasAPI.tiles.putBiomeTile(player.getEntityWorld(), atlasID, biomeID, x, z); } else { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.getEntityWorld()); data.setTile(dimension, x, z, new Tile(biomeID)); } }
@Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isEquipped) { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(stack, world); if (data == null || !(entity instanceof EntityPlayer)) return; // On the first run send the map from the server to the client: EntityPlayer player = (EntityPlayer) entity; if (!world.isRemote && !data.isSyncedOnPlayer(player) && !data.isEmpty()) { data.syncOnPlayer(stack.getItemDamage(), player); } // Same thing with the local markers: MarkersData markers = AntiqueAtlasMod.markersData.getMarkersData(stack, world); if (!world.isRemote && !markers.isSyncedOnPlayer(player) && !markers.isEmpty()) { markers.syncOnPlayer(stack.getItemDamage(), player); } // Updating map around player ArrayList<TileInfo> newTiles = data.updateMapAroundPlayer(player); if (!world.isRemote) { if (newTiles.size() > 0) { DimensionUpdatePacket packet = new DimensionUpdatePacket(stack.getItemDamage(), player.dimension); for (TileInfo t : newTiles) { packet.addTile(t.x, t.z, t.biome); } PacketDispatcher.sendToAll(packet); } } }
private static void drawMarkers(Rect shape, int atlasID, Vec3d position, int dimension) { GL11.glEnable(GL11.GL_SCISSOR_TEST); // glScissor uses the default window coordinates, // the display window does not. We need to fix this glScissorGUI(shape); // biomeData needed to prevent undiscovered markers from appearing DimensionData biomeData = AntiqueAtlasMod.atlasData.getAtlasData( atlasID, Minecraft.getMinecraft().world).getDimensionData( dimension); DimensionMarkersData globalMarkersData = AntiqueAtlasMod.globalMarkersData .getData().getMarkersDataInDimension(dimension); // Draw global markers: drawMarkersData(globalMarkersData, shape, biomeData, position); MarkersData markersData = AntiqueAtlasMod.markersData.getMarkersData( atlasID, Minecraft.getMinecraft().world); DimensionMarkersData localMarkersData = null; if (markersData != null) { localMarkersData = markersData.getMarkersDataInDimension(dimension); } // Draw local markers: drawMarkersData(localMarkersData, shape, biomeData, position); // get GL back to normal GL11.glDisable(GL11.GL_SCISSOR_TEST); GlStateManager.color(1, 1, 1, 1); }
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); DimensionData biomeData = AntiqueAtlasMod.atlasData.getAtlasData( atlasID, Minecraft.getMinecraft().world).getDimensionData(dimension);
AtlasData destBiomes = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, world); destBiomes.markDirty(); MarkersData destMarkers = AntiqueAtlasMod.markersData.getMarkersData(atlasID, world); ItemStack stack = event.craftMatrix.getStackInSlot(i); if (stack.isEmpty()) continue; AtlasData srcBiomes = AntiqueAtlasMod.atlasData.getAtlasData(stack, world); if (destBiomes != null && srcBiomes != null && destBiomes != srcBiomes) { for (int dim : srcBiomes.getVisitedDimensions()) {