/** Returns the Tile previously set at given coordinates. */ private Tile removeTile(int dimension, int x, int y) { DimensionData dimData = getDimensionData(dimension); return dimData.removeTile(x, y); }
/** Puts a given tile into given map at specified coordinates and, * if tileStitcher is present, sets appropriate sectors on adjacent tiles. */ public void setTile(int dimension, int x, int y, Tile tile) { DimensionData dimData = getDimensionData(dimension); dimData.setTile(x, y, tile); }
public Map<ShortVec2, Tile> getSeenChunksInDimension(int dimension) { return getDimensionData(dimension).getSeenChunks(); }
@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); } } }
@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 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); }
/** 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; } }
/**Creates a pre-packet-rework AtlasData NBT tag*/ public void writeToNBTv2(AtlasData atlasdata, NBTTagCompound compound) { compound.setInteger(AtlasData.TAG_VERSION, 2); NBTTagList dimensionMapList = new NBTTagList(); int dimension = 0; int key; Iterator<Integer> dimensionEntryKey = atlasdata.getVisitedDimensions().iterator(); for (dimension = 0; dimension<atlasdata.getVisitedDimensions().size(); dimension++) { NBTTagCompound dimTag = new NBTTagCompound(); key = dimensionEntryKey.next().intValue(); dimTag.setInteger(AtlasData.TAG_DIMENSION_ID, key); DimensionData dimData = atlasdata.getDimensionData(key); Map<ShortVec2, Tile> seenChunks = dimData.getSeenChunks(); int[] intArray = new int[seenChunks.size()*3]; int i = 0; for (Entry<ShortVec2, Tile> entry : seenChunks.entrySet()) { intArray[i++] = entry.getKey().x; intArray[i++] = entry.getKey().y; intArray[i++] = entry.getValue().biomeID; } dimTag.setIntArray(AtlasData.TAG_VISITED_CHUNKS, intArray); dimTag.setInteger(AtlasData.TAG_BROWSING_X, dimData.getBrowsingX()); dimTag.setInteger(AtlasData.TAG_BROWSING_Y, dimData.getBrowsingY()); dimTag.setInteger(AtlasData.TAG_BROWSING_ZOOM, (int)Math.round(dimData.getBrowsingZoom() * BrowsingPositionPacket.ZOOM_SCALE_FACTOR)); dimensionMapList.appendTag(dimTag); } compound.setTag(AtlasData.TAG_DIMENSION_MAP_LIST, dimensionMapList); }
atlasData.getDimensionData(player.dimension).setBrowsingPosition( (int)Math.round(-player.posX * SettingsConfig.userInterface.defaultScale), (int)Math.round(-player.posZ * SettingsConfig.userInterface.defaultScale),
ITileStorage seenChunks = this.getDimensionData(player.dimension); IBiomeDetector biomeDetector = getBiomeDetectorForDimension(player.dimension); int scanRadius = SettingsConfig.performance.scanRadius;
@Override public void readFromNBT(NBTTagCompound compound) { this.nbt = compound; int version = compound.getInteger(TAG_VERSION); if (version < VERSION) { Log.warn("Outdated atlas data format! Was %d but current is %d. Updating.", version, VERSION); readFromNBT2(compound); return; } NBTTagList dimensionMapList = compound.getTagList(TAG_DIMENSION_MAP_LIST, Constants.NBT.TAG_COMPOUND); for (int d = 0; d < dimensionMapList.tagCount(); d++) { NBTTagCompound dimTag = dimensionMapList.getCompoundTagAt(d); int dimensionID = dimTag.getInteger(TAG_DIMENSION_ID); NBTTagList dimensionTag = (NBTTagList) dimTag.getTag(TAG_VISITED_CHUNKS); DimensionData dimData = getDimensionData(dimensionID); dimData.readFromNBT(dimensionTag); double zoom = (double)dimTag.getInteger(TAG_BROWSING_ZOOM) / BrowsingPositionPacket.ZOOM_SCALE_FACTOR; if (zoom == 0) zoom = 0.5; dimData.setBrowsingPosition(dimTag.getInteger(TAG_BROWSING_X), dimTag.getInteger(TAG_BROWSING_Y), zoom); } }
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); }
atlasID, Minecraft.getMinecraft().world).getDimensionData(dimension);
if (destBiomes != null && srcBiomes != null && destBiomes != srcBiomes) { for (int dim : srcBiomes.getVisitedDimensions()) { destBiomes.getDimensionData(dim).addData(srcBiomes.getDimensionData(dim));
/**Reads from NBT version 2. This is designed to allow easy upgrading to version 3.*/ public void readFromNBT2(NBTTagCompound compound) { this.nbt = compound; int version = compound.getInteger(TAG_VERSION); if (version < 2) { Log.warn("Loading map with version 2 failed"); this.markDirty(); return; } NBTTagList dimensionMapList = compound.getTagList(TAG_DIMENSION_MAP_LIST, Constants.NBT.TAG_COMPOUND); for (int d = 0; d < dimensionMapList.tagCount(); d++) { NBTTagCompound dimTag = dimensionMapList.getCompoundTagAt(d); int dimensionID = dimTag.getInteger(TAG_DIMENSION_ID); int[] intArray = dimTag.getIntArray(TAG_VISITED_CHUNKS); DimensionData dimData = getDimensionData(dimensionID); for (int i = 0; i < intArray.length; i += 3) { if (dimData.getTile(intArray[i], intArray[i+1]) != null){ Log.warn("Duplicate tile at "+ intArray[i] + ", " + intArray[i]); } dimData.setTile(intArray[i], intArray[i+1], new Tile(intArray[i+2])); } Log.info("Updated " + intArray.length/3 + " chunks"); double zoom = (double)dimTag.getInteger(TAG_BROWSING_ZOOM) / BrowsingPositionPacket.ZOOM_SCALE_FACTOR; if (zoom == 0) zoom = 0.5; dimData.setBrowsingPosition(dimTag.getInteger(TAG_BROWSING_X), dimTag.getInteger(TAG_BROWSING_Y), zoom); } }