/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * DimensionPropertiesEditor.java * * Created on 8-jun-2011, 20:56:18 */ package org.pepsoft.worldpainter; import org.pepsoft.worldpainter.layers.*; import org.pepsoft.worldpainter.layers.exporters.AnnotationsExporter.AnnotationsSettings; import org.pepsoft.worldpainter.layers.exporters.CavernsExporter.CavernsSettings; import org.pepsoft.worldpainter.layers.exporters.ChasmsExporter.ChasmsSettings; import org.pepsoft.worldpainter.layers.exporters.FrostExporter.FrostSettings; import org.pepsoft.worldpainter.layers.exporters.ResourcesExporter.ResourcesExporterSettings; import org.pepsoft.worldpainter.layers.exporters.TreesExporter.TreeLayerSettings; import org.pepsoft.worldpainter.themes.SimpleTheme; import org.pepsoft.worldpainter.themes.TerrainListCellRenderer; import javax.swing.*; import javax.swing.JSpinner.NumberEditor; import javax.swing.event.ListSelectionEvent; import java.util.*; import static org.pepsoft.minecraft.Constants.*; /** * * @author pepijn */ public class DimensionPropertiesEditor extends javax.swing.JPanel { /** Creates new form DimensionPropertiesEditor */ public DimensionPropertiesEditor() { initComponents(); if ((Configuration.getInstance() != null) && Configuration.getInstance().isEasyMode()) { jLabel4.setVisible(false); radioButtonNoBorder.setVisible(false); radioButtonVoidBorder.setVisible(false); radioButtonWaterBorder.setVisible(false); jLabel5.setVisible(false); spinnerBorderLevel.setVisible(false); jLabel44.setVisible(false); radioButtonLavaBorder.setVisible(false); jLabel8.setVisible(false); spinnerBorderSize.setVisible(false); jLabel9.setVisible(false); checkBoxBedrockWall.setVisible(false); jLabel7.setVisible(false); spinnerMinecraftSeed.setVisible(false); checkBoxPopulate.setVisible(false); jLabel47.setVisible(false); } spinnerQuartzChance.setEditor(new NumberEditor(spinnerQuartzChance, "0")); spinnerGoldChance.setEditor(new NumberEditor(spinnerGoldChance, "0")); spinnerGoldMaxLevel.setEditor(new NumberEditor(spinnerGoldMaxLevel, "0")); spinnerIronChance.setEditor(new NumberEditor(spinnerIronChance, "0")); spinnerIronMaxLevel.setEditor(new NumberEditor(spinnerIronMaxLevel, "0")); spinnerCoalChance.setEditor(new NumberEditor(spinnerCoalChance, "0")); spinnerCoalMaxLevel.setEditor(new NumberEditor(spinnerCoalMaxLevel, "0")); spinnerLapisChance.setEditor(new NumberEditor(spinnerLapisChance, "0")); spinnerLapisMaxLevel.setEditor(new NumberEditor(spinnerLapisMaxLevel, "0")); spinnerDiamondChance.setEditor(new NumberEditor(spinnerDiamondChance, "0")); spinnerDiamondMaxLevel.setEditor(new NumberEditor(spinnerDiamondMaxLevel, "0")); spinnerRedstoneChance.setEditor(new NumberEditor(spinnerRedstoneChance, "0")); spinnerRedstoneMaxLevel.setEditor(new NumberEditor(spinnerRedstoneMaxLevel, "0")); spinnerWaterChance.setEditor(new NumberEditor(spinnerWaterChance, "0")); spinnerWaterMaxLevel.setEditor(new NumberEditor(spinnerWaterMaxLevel, "0")); spinnerLavaChance.setEditor(new NumberEditor(spinnerLavaChance, "0")); spinnerDirtChance.setEditor(new NumberEditor(spinnerDirtChance, "0")); spinnerLavaMaxLevel.setEditor(new NumberEditor(spinnerLavaMaxLevel, "0")); spinnerDirtMaxLevel.setEditor(new NumberEditor(spinnerDirtMaxLevel, "0")); spinnerGravelChance.setEditor(new NumberEditor(spinnerGravelChance, "0")); spinnerGravelMaxLevel.setEditor(new NumberEditor(spinnerGravelMaxLevel, "0")); spinnerEmeraldChance.setEditor(new NumberEditor(spinnerEmeraldChance, "0")); spinnerEmeraldMaxLevel.setEditor(new NumberEditor(spinnerEmeraldMaxLevel, "0")); spinnerGoldMinLevel.setEditor(new NumberEditor(spinnerGoldMinLevel, "0")); spinnerIronMinLevel.setEditor(new NumberEditor(spinnerIronMinLevel, "0")); spinnerCoalMinLevel.setEditor(new NumberEditor(spinnerCoalMinLevel, "0")); spinnerLapisMinLevel.setEditor(new NumberEditor(spinnerLapisMinLevel, "0")); spinnerDiamondMinLevel.setEditor(new NumberEditor(spinnerDiamondMinLevel, "0")); spinnerEmeraldMinLevel.setEditor(new NumberEditor(spinnerEmeraldMinLevel, "0")); spinnerWaterMinLevel.setEditor(new NumberEditor(spinnerWaterMinLevel, "0")); spinnerLavaMinLevel.setEditor(new NumberEditor(spinnerLavaMinLevel, "0")); spinnerDirtMinLevel.setEditor(new NumberEditor(spinnerDirtMinLevel, "0")); spinnerGravelMinLevel.setEditor(new NumberEditor(spinnerGravelMinLevel, "0")); spinnerRedstoneMinLevel.setEditor(new NumberEditor(spinnerRedstoneMinLevel, "0")); spinnerQuartzMinLevel.setEditor(new NumberEditor(spinnerQuartzMinLevel, "0")); spinnerQuartzMaxLevel.setEditor(new NumberEditor(spinnerQuartzMaxLevel, "0")); spinnerCavernsMinLevel.setEditor(new NumberEditor(spinnerCavernsMinLevel, "0")); spinnerCavernsMaxLevel.setEditor(new NumberEditor(spinnerCavernsMaxLevel, "0")); spinnerChasmsMinLevel.setEditor(new NumberEditor(spinnerChasmsMinLevel, "0")); spinnerChasmsMaxLevel.setEditor(new NumberEditor(spinnerChasmsMaxLevel, "0")); addListeners(spinnerGoldMinLevel, spinnerGoldMaxLevel); addListeners(spinnerIronMinLevel, spinnerIronMaxLevel); addListeners(spinnerCoalMinLevel, spinnerCoalMaxLevel); addListeners(spinnerLapisMinLevel, spinnerLapisMaxLevel); addListeners(spinnerDiamondMinLevel, spinnerDiamondMaxLevel); addListeners(spinnerEmeraldMinLevel, spinnerEmeraldMaxLevel); addListeners(spinnerWaterMinLevel, spinnerWaterMaxLevel); addListeners(spinnerLavaMinLevel, spinnerLavaMaxLevel); addListeners(spinnerDirtMinLevel, spinnerDirtMaxLevel); addListeners(spinnerGravelMinLevel, spinnerGravelMaxLevel); addListeners(spinnerRedstoneMinLevel, spinnerRedstoneMaxLevel); addListeners(spinnerQuartzMinLevel, spinnerQuartzMaxLevel); addListeners(spinnerCavernsMinLevel, spinnerCavernsMaxLevel); addListeners(spinnerChasmsMinLevel, spinnerChasmsMaxLevel); tableCustomLayers.setDefaultRenderer(CustomLayer.class, new CustomLayersTableCellRenderer()); tableCustomLayers.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> setControlStates()); } public void setColourScheme(ColourScheme colourScheme) { comboBoxSubsurfaceMaterial.setRenderer(new TerrainListCellRenderer(colourScheme)); themeEditor.setColourScheme(colourScheme); } public ColourScheme getColourScheme() { return themeEditor.getColourScheme(); } public void setMode(Mode mode) { if (this.mode != null) { throw new IllegalStateException("Mode already set"); } this.mode = mode; switch (mode) { case EXPORT: jTabbedPane1.remove(1); break; case DEFAULT_SETTINGS: spinnerMinecraftSeed.setEnabled(false); jTabbedPane1.remove(5); break; case EDITOR: jTabbedPane1.remove(5); break; default: throw new IllegalArgumentException("mode " + mode); } } public Dimension getDimension() { return dimension; } public void setDimension(Dimension dimension) { this.dimension = dimension; if (dimension != null) { loadSettings(); } } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); comboBoxSubsurfaceMaterial.setEnabled(enabled); checkBoxCavernsEverywhere.setEnabled(enabled); checkBoxChasmsEverywhere.setEnabled(enabled); checkBoxDeciduousEverywhere.setEnabled(enabled); checkBoxFrostEverywhere.setEnabled(enabled); checkBoxFloodCaverns.setEnabled(enabled); checkBoxCavernsBreakSurface.setEnabled(enabled); checkBoxChasmsBreakSurface.setEnabled(enabled); checkBoxPineEverywhere.setEnabled(enabled); checkBoxJungleEverywhere.setEnabled(enabled); checkBoxSwamplandEverywhere.setEnabled(enabled); jCheckBox8.setEnabled(enabled); checkBoxSmoothSnow.setEnabled(enabled); jTabbedPane1.setEnabled(enabled); spinnerQuartzChance.setEnabled(enabled); spinnerGoldChance.setEnabled(enabled); spinnerGoldMaxLevel.setEnabled(enabled); spinnerIronChance.setEnabled(enabled); spinnerIronMaxLevel.setEnabled(enabled); spinnerCoalChance.setEnabled(enabled); spinnerCoalMaxLevel.setEnabled(enabled); spinnerLapisChance.setEnabled(enabled); spinnerLapisMaxLevel.setEnabled(enabled); spinnerDiamondChance.setEnabled(enabled); spinnerDiamondMaxLevel.setEnabled(enabled); spinnerRedstoneChance.setEnabled(enabled); spinnerRedstoneMaxLevel.setEnabled(enabled); spinnerWaterChance.setEnabled(enabled); spinnerWaterMaxLevel.setEnabled(enabled); spinnerLavaChance.setEnabled(enabled); spinnerDirtChance.setEnabled(enabled); spinnerLavaMaxLevel.setEnabled(enabled); spinnerDirtMaxLevel.setEnabled(enabled); spinnerGravelChance.setEnabled(enabled); spinnerGravelMaxLevel.setEnabled(enabled); spinnerEmeraldChance.setEnabled(enabled); spinnerEmeraldMaxLevel.setEnabled(enabled); spinnerGoldMinLevel.setEnabled(enabled); spinnerIronMinLevel.setEnabled(enabled); spinnerCoalMinLevel.setEnabled(enabled); spinnerLapisMinLevel.setEnabled(enabled); spinnerDiamondMinLevel.setEnabled(enabled); spinnerEmeraldMinLevel.setEnabled(enabled); spinnerWaterMinLevel.setEnabled(enabled); spinnerLavaMinLevel.setEnabled(enabled); spinnerDirtMinLevel.setEnabled(enabled); spinnerGravelMinLevel.setEnabled(enabled); spinnerRedstoneMinLevel.setEnabled(enabled); spinnerQuartzMinLevel.setEnabled(enabled); spinnerQuartzMaxLevel.setEnabled(enabled); themeEditor.setEnabled(enabled); spinnerMinSurfaceDepth.setEnabled(enabled); spinnerMaxSurfaceDepth.setEnabled(enabled); checkBoxBottomless.setEnabled(enabled); spinnerCavernsMinLevel.setEnabled(enabled); spinnerCavernsMaxLevel.setEnabled(enabled); spinnerChasmsMinLevel.setEnabled(enabled); spinnerChasmsMaxLevel.setEnabled(enabled); checkBoxCoverSteepTerrain.setEnabled(enabled); checkBoxExportAnnotations.setEnabled(enabled); checkBoxSnowUnderTrees.setEnabled(enabled); setControlStates(); } public boolean saveSettings() { int maxHeight = dimension.getMaxHeight() - 1; // terrain ranges if ((mode != Mode.EXPORT) && (! themeEditor.save())) { jTabbedPane1.setSelectedIndex(1); return false; } // general int topLayerMinDepth = (Integer) spinnerMinSurfaceDepth.getValue(); dimension.setTopLayerMinDepth(topLayerMinDepth); dimension.setTopLayerVariation((Integer) spinnerMaxSurfaceDepth.getValue() - topLayerMinDepth); dimension.setSubsurfaceMaterial((Terrain) comboBoxSubsurfaceMaterial.getSelectedItem()); dimension.setBorder(getSelectedBorder()); dimension.setBorderLevel((Integer) spinnerBorderLevel.getValue()); dimension.setBorderSize((Integer) spinnerBorderSize.getValue() / 128); dimension.setBedrockWall(checkBoxBedrockWall.isSelected()); long previousSeed = dimension.getMinecraftSeed(); long newSeed = ((Number) spinnerMinecraftSeed.getValue()).longValue(); if (newSeed != previousSeed) { dimension.setMinecraftSeed(newSeed); } dimension.setBottomless(checkBoxBottomless.isSelected()); dimension.setCoverSteepTerrain(checkBoxCoverSteepTerrain.isSelected()); dimension.setCeilingHeight((Integer) spinnerCeilingHeight.getValue()); // Minecraft world border World2 world = dimension.getWorld(); if (world != null) { World2.BorderSettings borderSettings = world.getBorderSettings(); borderSettings.setCentreX((Integer) spinnerMcBorderCentreX.getValue()); borderSettings.setCentreY((Integer) spinnerMcBorderCentreY.getValue()); borderSettings.setSize((Integer) spinnerMcBorderSize.getValue()); // borderSettings.setSafeZone((Integer) spinnerMcBorderBuffer.getValue()); // borderSettings.setDamagePerBlock((Float) spinnerMcBorderDamage.getValue()); // borderSettings.setWarningTime((Integer) spinnerMcBorderWarningTime.getValue()); // borderSettings.setWarningBlocks((Integer) spinnerMcBorderWarningDistance.getValue()); } // caverns CavernsSettings cavernsSettings = (CavernsSettings) dimension.getLayerSettings(Caverns.INSTANCE); if (cavernsSettings == null) { cavernsSettings = new CavernsSettings(); } if (checkBoxCavernsEverywhere.isSelected()) { int cavernsEverywhereLevel = sliderCavernsEverywhereLevel.getValue(); cavernsSettings.setCavernsEverywhereLevel(cavernsEverywhereLevel); } else { cavernsSettings.setCavernsEverywhereLevel(0); } if (checkBoxFloodCaverns.isSelected()) { cavernsSettings.setWaterLevel((Integer) spinnerCavernsFloodLevel.getValue()); } else { cavernsSettings.setWaterLevel(0); } cavernsSettings.setFloodWithLava(checkBoxCavernsFloodWithLava.isSelected()); cavernsSettings.setSurfaceBreaking(checkBoxCavernsBreakSurface.isSelected()); cavernsSettings.setLeaveWater(! checkBoxCavernsRemoveWater.isSelected()); cavernsSettings.setMinimumLevel((Integer) spinnerCavernsMinLevel.getValue()); int cavernsMaxLevel = (Integer) spinnerCavernsMaxLevel.getValue(); cavernsSettings.setMaximumLevel((cavernsMaxLevel >= maxHeight) ? Integer.MAX_VALUE : cavernsMaxLevel); dimension.setLayerSettings(Caverns.INSTANCE, cavernsSettings); // chasms ChasmsSettings chasmsSettings = (ChasmsSettings) dimension.getLayerSettings(Chasms.INSTANCE); if (chasmsSettings == null) { chasmsSettings = new ChasmsSettings(); } if (checkBoxChasmsEverywhere.isSelected()) { int chasmsEverywhereLevel = sliderChasmsEverywhereLevel.getValue(); chasmsSettings.setChasmsEverywhereLevel(chasmsEverywhereLevel); } else { chasmsSettings.setChasmsEverywhereLevel(0); } chasmsSettings.setSurfaceBreaking(checkBoxChasmsBreakSurface.isSelected()); // Other settings copied from Caverns layer if (checkBoxFloodCaverns.isSelected()) { chasmsSettings.setWaterLevel((Integer) spinnerCavernsFloodLevel.getValue()); } else { chasmsSettings.setWaterLevel(0); } chasmsSettings.setFloodWithLava(checkBoxCavernsFloodWithLava.isSelected()); chasmsSettings.setLeaveWater(! checkBoxCavernsRemoveWater.isSelected()); chasmsSettings.setMinimumLevel((Integer) spinnerChasmsMinLevel.getValue()); chasmsSettings.setMaximumLevel((Integer) spinnerChasmsMaxLevel.getValue()); dimension.setLayerSettings(Chasms.INSTANCE, chasmsSettings); // populate dimension.setPopulate(checkBoxPopulate.isSelected()); // deciduous TreeLayerSettings<DeciduousForest> deciduousSettings = (TreeLayerSettings<DeciduousForest>) dimension.getLayerSettings(DeciduousForest.INSTANCE); if (deciduousSettings == null) { deciduousSettings = new TreeLayerSettings<>(DeciduousForest.INSTANCE); } if (checkBoxDeciduousEverywhere.isSelected()) { int minimumLevel = sliderDeciduousLevel.getValue(); deciduousSettings.setMinimumLevel(minimumLevel); } else { deciduousSettings.setMinimumLevel(0); } dimension.setLayerSettings(DeciduousForest.INSTANCE, deciduousSettings); // pine TreeLayerSettings<PineForest> pineSettings = (TreeLayerSettings<PineForest>) dimension.getLayerSettings(PineForest.INSTANCE); if (pineSettings == null) { pineSettings = new TreeLayerSettings<>(PineForest.INSTANCE); } if (checkBoxPineEverywhere.isSelected()) { int minimumLevel = sliderPineLevel.getValue(); pineSettings.setMinimumLevel(minimumLevel); } else { pineSettings.setMinimumLevel(0); } dimension.setLayerSettings(PineForest.INSTANCE, pineSettings); // jungle TreeLayerSettings<Jungle> jungleSettings = (TreeLayerSettings<Jungle>) dimension.getLayerSettings(Jungle.INSTANCE); if (jungleSettings == null) { jungleSettings = new TreeLayerSettings<>(Jungle.INSTANCE); } if (checkBoxJungleEverywhere.isSelected()) { int minimumLevel = sliderJungleLevel.getValue(); jungleSettings.setMinimumLevel(minimumLevel); } else { jungleSettings.setMinimumLevel(0); } dimension.setLayerSettings(Jungle.INSTANCE, jungleSettings); // swampland TreeLayerSettings<SwampLand> swampLandSettings = (TreeLayerSettings<SwampLand>) dimension.getLayerSettings(SwampLand.INSTANCE); if (swampLandSettings == null) { swampLandSettings = new TreeLayerSettings<>(SwampLand.INSTANCE); } if (checkBoxSwamplandEverywhere.isSelected()) { int minimumLevel = jSlider6.getValue(); swampLandSettings.setMinimumLevel(minimumLevel); } else { swampLandSettings.setMinimumLevel(0); } dimension.setLayerSettings(SwampLand.INSTANCE, swampLandSettings); // frost FrostSettings frostSettings = (FrostSettings) dimension.getLayerSettings(Frost.INSTANCE); if (frostSettings == null) { frostSettings = new FrostSettings(); } frostSettings.setFrostEverywhere(checkBoxFrostEverywhere.isSelected()); if ((! checkBoxSmoothSnow.isSelected()) || (frostSettings.getMode() != 3)) { frostSettings.setMode(checkBoxSmoothSnow.isSelected() ? 2 : 0); } frostSettings.setSnowUnderTrees(checkBoxSnowUnderTrees.isSelected()); dimension.setLayerSettings(Frost.INSTANCE, frostSettings); // resources ResourcesExporterSettings resourcesSettings = (ResourcesExporterSettings) dimension.getLayerSettings(Resources.INSTANCE); if (resourcesSettings == null) { resourcesSettings = new ResourcesExporterSettings(dimension.getMaxHeight()); } if (jCheckBox8.isSelected()) { int minimumLevel = jSlider4.getValue(); resourcesSettings.setMinimumLevel(minimumLevel); } else { resourcesSettings.setMinimumLevel(0); } resourcesSettings.setChance(BLK_GOLD_ORE, (Integer) spinnerGoldChance.getValue()); resourcesSettings.setMinLevel(BLK_GOLD_ORE, (Integer) spinnerGoldMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_GOLD_ORE, (Integer) spinnerGoldMaxLevel.getValue()); resourcesSettings.setChance(BLK_IRON_ORE, (Integer) spinnerIronChance.getValue()); resourcesSettings.setMinLevel(BLK_IRON_ORE, (Integer) spinnerIronMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_IRON_ORE, (Integer) spinnerIronMaxLevel.getValue()); resourcesSettings.setChance(BLK_COAL, (Integer) spinnerCoalChance.getValue()); resourcesSettings.setMinLevel(BLK_COAL, (Integer) spinnerCoalMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_COAL, (Integer) spinnerCoalMaxLevel.getValue()); resourcesSettings.setChance(BLK_LAPIS_LAZULI_ORE, (Integer) spinnerLapisChance.getValue()); resourcesSettings.setMinLevel(BLK_LAPIS_LAZULI_ORE, (Integer) spinnerLapisMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_LAPIS_LAZULI_ORE, (Integer) spinnerLapisMaxLevel.getValue()); resourcesSettings.setChance(BLK_DIAMOND_ORE, (Integer) spinnerDiamondChance.getValue()); resourcesSettings.setMinLevel(BLK_DIAMOND_ORE, (Integer) spinnerDiamondMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_DIAMOND_ORE, (Integer) spinnerDiamondMaxLevel.getValue()); resourcesSettings.setChance(BLK_REDSTONE_ORE, (Integer) spinnerRedstoneChance.getValue()); resourcesSettings.setMinLevel(BLK_REDSTONE_ORE, (Integer) spinnerRedstoneMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_REDSTONE_ORE, (Integer) spinnerRedstoneMaxLevel.getValue()); resourcesSettings.setChance(BLK_WATER, (Integer) spinnerWaterChance.getValue()); resourcesSettings.setMinLevel(BLK_WATER, (Integer) spinnerWaterMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_WATER, (Integer) spinnerWaterMaxLevel.getValue()); resourcesSettings.setChance(BLK_LAVA, (Integer) spinnerLavaChance.getValue()); resourcesSettings.setMinLevel(BLK_LAVA, (Integer) spinnerLavaMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_LAVA, (Integer) spinnerLavaMaxLevel.getValue()); resourcesSettings.setChance(BLK_DIRT, (Integer) spinnerDirtChance.getValue()); resourcesSettings.setMinLevel(BLK_DIRT, (Integer) spinnerDirtMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_DIRT, (Integer) spinnerDirtMaxLevel.getValue()); resourcesSettings.setChance(BLK_GRAVEL, (Integer) spinnerGravelChance.getValue()); resourcesSettings.setMinLevel(BLK_GRAVEL, (Integer) spinnerGravelMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_GRAVEL, (Integer) spinnerGravelMaxLevel.getValue()); resourcesSettings.setChance(BLK_EMERALD_ORE, (Integer) spinnerEmeraldChance.getValue()); resourcesSettings.setMinLevel(BLK_EMERALD_ORE, (Integer) spinnerEmeraldMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_EMERALD_ORE, (Integer) spinnerEmeraldMaxLevel.getValue()); resourcesSettings.setChance(BLK_QUARTZ_ORE, (Integer) spinnerQuartzChance.getValue()); resourcesSettings.setMinLevel(BLK_QUARTZ_ORE, (Integer) spinnerQuartzMinLevel.getValue()); resourcesSettings.setMaxLevel(BLK_QUARTZ_ORE, (Integer) spinnerQuartzMaxLevel.getValue()); dimension.setLayerSettings(Resources.INSTANCE, resourcesSettings); // annotations AnnotationsSettings annotationsSettings = (AnnotationsSettings) dimension.getLayerSettings(Annotations.INSTANCE); if (annotationsSettings == null) { annotationsSettings = new AnnotationsSettings(); } annotationsSettings.setExport(checkBoxExportAnnotations.isSelected()); dimension.setLayerSettings(Annotations.INSTANCE, annotationsSettings); // custom layers if ((mode == Mode.EXPORT) && (! customLayersTableModel.isPristine())) { customLayersTableModel.save(); dimension.setDirty(true); } return true; } public void addBorderListener(BorderListener borderListener) { borderListeners.add(borderListener); } public void removeBorderListener(BorderListener borderListener) { borderListeners.remove(borderListener); } public boolean isPopulateSelected() { return checkBoxPopulate.isSelected(); } private Dimension.Border getSelectedBorder() { if (radioButtonLavaBorder.isSelected()) { return radioButtonEndlessBorder.isSelected() ? Dimension.Border.ENDLESS_LAVA : Dimension.Border.LAVA; } else if (radioButtonNoBorder.isSelected()) { return null; } else if (radioButtonVoidBorder.isSelected()) { return radioButtonEndlessBorder.isSelected() ? Dimension.Border.ENDLESS_VOID : Dimension.Border.VOID; } else { return radioButtonEndlessBorder.isSelected() ? Dimension.Border.ENDLESS_WATER : Dimension.Border.WATER; } } private void loadSettings() { int maxHeight = dimension.getMaxHeight() - 1; // general ((SpinnerNumberModel) spinnerMinSurfaceDepth.getModel()).setMaximum(maxHeight); spinnerMinSurfaceDepth.setValue(dimension.getTopLayerMinDepth()); ((SpinnerNumberModel) spinnerMaxSurfaceDepth.getModel()).setMaximum(maxHeight); spinnerMaxSurfaceDepth.setValue(dimension.getTopLayerMinDepth() + dimension.getTopLayerVariation()); if (dimension.getBorder() != null) { switch (dimension.getBorder()) { case LAVA: radioButtonLavaBorder.setSelected(true); radioButtonFixedBorder.setSelected(true); break; case WATER: radioButtonWaterBorder.setSelected(true); radioButtonFixedBorder.setSelected(true); break; case VOID: radioButtonVoidBorder.setSelected(true); radioButtonFixedBorder.setSelected(true); break; case ENDLESS_LAVA: radioButtonLavaBorder.setSelected(true); radioButtonEndlessBorder.setSelected(true); break; case ENDLESS_WATER: radioButtonWaterBorder.setSelected(true); radioButtonEndlessBorder.setSelected(true); break; case ENDLESS_VOID: radioButtonVoidBorder.setSelected(true); radioButtonEndlessBorder.setSelected(true); break; default: throw new InternalError(); } } else { radioButtonNoBorder.setSelected(true); } ((SpinnerNumberModel) spinnerBorderLevel.getModel()).setMaximum(maxHeight); spinnerBorderLevel.setValue(dimension.getBorderLevel()); spinnerBorderSize.setValue(dimension.getBorderSize() * 128); checkBoxBedrockWall.setSelected(dimension.isBedrockWall()); spinnerMinecraftSeed.setValue(dimension.getMinecraftSeed()); checkBoxBottomless.setSelected(dimension.isBottomless()); checkBoxCoverSteepTerrain.setSelected(dimension.isCoverSteepTerrain()); ((SpinnerNumberModel) spinnerCeilingHeight.getModel()).setMaximum(maxHeight + 1); spinnerCeilingHeight.setValue(dimension.getCeilingHeight()); // Minecraft world border World2 world = dimension.getWorld(); if (world != null) { World2.BorderSettings borderSettings = world.getBorderSettings(); spinnerMcBorderCentreX.setValue(borderSettings.getCentreX()); spinnerMcBorderCentreY.setValue(borderSettings.getCentreY()); spinnerMcBorderSize.setValue(borderSettings.getSize()); // spinnerMcBorderBuffer.setValue(borderSettings.getSafeZone()); // spinnerMcBorderDamage.setValue(borderSettings.getDamagePerBlock()); // spinnerMcBorderWarningTime.setValue(borderSettings.getWarningTime()); // spinnerMcBorderWarningDistance.setValue(borderSettings.getWarningBlocks()); } else { spinnerMcBorderCentreX.setEnabled(false); spinnerMcBorderCentreY.setEnabled(false); spinnerMcBorderSize.setEnabled(false); // spinnerMcBorderBuffer.setEnabled(false); // spinnerMcBorderDamage.setEnabled(false); // spinnerMcBorderWarningTime.setEnabled(false); // spinnerMcBorderWarningDistance.setEnabled(false); } List<Terrain> materialList = new ArrayList<>(Arrays.asList(Terrain.VALUES)); for (Iterator<Terrain> i = materialList.iterator(); i.hasNext(); ) { Terrain terrain = i.next(); if ((terrain.isCustom() && (! terrain.isConfigured())) || (terrain == Terrain.GRASS) || (terrain == Terrain.DESERT) || (terrain == Terrain.RED_DESERT)) { i.remove(); } } comboBoxSubsurfaceMaterial.setModel(new DefaultComboBoxModel(materialList.toArray())); comboBoxSubsurfaceMaterial.setSelectedItem(dimension.getSubsurfaceMaterial()); // caverns CavernsSettings cavernsSettings = (CavernsSettings) dimension.getLayerSettings(Caverns.INSTANCE); if (cavernsSettings == null) { cavernsSettings = new CavernsSettings(); } if (cavernsSettings.getCavernsEverywhereLevel() > 0) { checkBoxCavernsEverywhere.setSelected(true); sliderCavernsEverywhereLevel.setValue(cavernsSettings.getCavernsEverywhereLevel()); } else { checkBoxCavernsEverywhere.setSelected(false); sliderCavernsEverywhereLevel.setValue(8); } ((SpinnerNumberModel) spinnerCavernsFloodLevel.getModel()).setMaximum(maxHeight); if (cavernsSettings.getWaterLevel() > 0) { checkBoxFloodCaverns.setSelected(true); spinnerCavernsFloodLevel.setValue(cavernsSettings.getWaterLevel()); } else { checkBoxFloodCaverns.setSelected(false); spinnerCavernsFloodLevel.setValue(8); } checkBoxCavernsFloodWithLava.setSelected(cavernsSettings.isFloodWithLava()); checkBoxCavernsBreakSurface.setSelected(cavernsSettings.isSurfaceBreaking()); checkBoxCavernsRemoveWater.setSelected(! cavernsSettings.isLeaveWater()); ((SpinnerNumberModel) spinnerCavernsMinLevel.getModel()).setMaximum(maxHeight); spinnerCavernsMinLevel.setValue(cavernsSettings.getMinimumLevel()); ((SpinnerNumberModel) spinnerCavernsMaxLevel.getModel()).setMaximum(maxHeight); spinnerCavernsMaxLevel.setValue(Math.min(cavernsSettings.getMaximumLevel(), maxHeight)); // chasms ChasmsSettings chasmsSettings = (ChasmsSettings) dimension.getLayerSettings(Chasms.INSTANCE); if (chasmsSettings == null) { chasmsSettings = new ChasmsSettings(); } if (chasmsSettings.getChasmsEverywhereLevel() > 0) { checkBoxChasmsEverywhere.setSelected(true); sliderChasmsEverywhereLevel.setValue(chasmsSettings.getChasmsEverywhereLevel()); } else { checkBoxChasmsEverywhere.setSelected(false); sliderChasmsEverywhereLevel.setValue(8); } checkBoxChasmsBreakSurface.setSelected(chasmsSettings.isSurfaceBreaking()); ((SpinnerNumberModel) spinnerChasmsMinLevel.getModel()).setMaximum(maxHeight); spinnerChasmsMinLevel.setValue(chasmsSettings.getMinimumLevel()); ((SpinnerNumberModel) spinnerChasmsMaxLevel.getModel()).setMaximum(maxHeight); spinnerChasmsMaxLevel.setValue(Math.min(chasmsSettings.getMaximumLevel(), maxHeight)); // populate checkBoxPopulate.setSelected(dimension.isPopulate()); // deciduous TreeLayerSettings<DeciduousForest> deciduousSettings = (TreeLayerSettings<DeciduousForest>) dimension.getLayerSettings(DeciduousForest.INSTANCE); if (deciduousSettings == null) { deciduousSettings = new TreeLayerSettings<>(DeciduousForest.INSTANCE); } if (deciduousSettings.getMinimumLevel() > 0) { checkBoxDeciduousEverywhere.setSelected(true); sliderDeciduousLevel.setValue(deciduousSettings.getMinimumLevel()); } else { checkBoxDeciduousEverywhere.setSelected(false); sliderDeciduousLevel.setValue(8); } // pine TreeLayerSettings<PineForest> pineSettings = (TreeLayerSettings<PineForest>) dimension.getLayerSettings(PineForest.INSTANCE); if (pineSettings == null) { pineSettings = new TreeLayerSettings<>(PineForest.INSTANCE); } if (pineSettings.getMinimumLevel() > 0) { checkBoxPineEverywhere.setSelected(true); sliderPineLevel.setValue(pineSettings.getMinimumLevel()); } else { checkBoxPineEverywhere.setSelected(false); sliderPineLevel.setValue(8); } // jungle TreeLayerSettings<Jungle> jungleSettings = (TreeLayerSettings<Jungle>) dimension.getLayerSettings(Jungle.INSTANCE); if (jungleSettings == null) { jungleSettings = new TreeLayerSettings<>(Jungle.INSTANCE); } if (jungleSettings.getMinimumLevel() > 0) { checkBoxJungleEverywhere.setSelected(true); sliderJungleLevel.setValue(jungleSettings.getMinimumLevel()); } else { checkBoxJungleEverywhere.setSelected(false); sliderJungleLevel.setValue(8); } // swamp TreeLayerSettings<SwampLand> swampLandSettings = (TreeLayerSettings<SwampLand>) dimension.getLayerSettings(SwampLand.INSTANCE); if (swampLandSettings == null) { swampLandSettings = new TreeLayerSettings<>(SwampLand.INSTANCE); } if (swampLandSettings.getMinimumLevel() > 0) { checkBoxSwamplandEverywhere.setSelected(true); jSlider6.setValue(swampLandSettings.getMinimumLevel()); } else { checkBoxSwamplandEverywhere.setSelected(false); jSlider6.setValue(8); } // frost FrostSettings frostSettings = (FrostSettings) dimension.getLayerSettings(Frost.INSTANCE); if (frostSettings == null) { frostSettings = new FrostSettings(); } checkBoxFrostEverywhere.setSelected(frostSettings.isFrostEverywhere()); checkBoxSmoothSnow.setSelected((frostSettings.getMode() == 2) || (frostSettings.getMode() == 3)); checkBoxSnowUnderTrees.setSelected(frostSettings.isSnowUnderTrees()); // resources ResourcesExporterSettings resourcesSettings = (ResourcesExporterSettings) dimension.getLayerSettings(Resources.INSTANCE); if (resourcesSettings == null) { resourcesSettings = new ResourcesExporterSettings(dimension.getMaxHeight()); resourcesSettings.setMinimumLevel(0); } jCheckBox8.setSelected(resourcesSettings.isApplyEverywhere()); if (resourcesSettings.isApplyEverywhere()) { jSlider4.setValue(resourcesSettings.getMinimumLevel()); } else { jSlider4.setValue(8); } spinnerGoldChance.setValue(resourcesSettings.getChance(BLK_GOLD_ORE)); ((SpinnerNumberModel) spinnerGoldMinLevel.getModel()).setMaximum(maxHeight); spinnerGoldMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_GOLD_ORE), maxHeight)); ((SpinnerNumberModel) spinnerGoldMaxLevel.getModel()).setMaximum(maxHeight); spinnerGoldMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_GOLD_ORE), maxHeight)); spinnerIronChance.setValue(resourcesSettings.getChance(BLK_IRON_ORE)); ((SpinnerNumberModel) spinnerIronMinLevel.getModel()).setMaximum(maxHeight); spinnerIronMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_IRON_ORE), maxHeight)); ((SpinnerNumberModel) spinnerIronMaxLevel.getModel()).setMaximum(maxHeight); spinnerIronMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_IRON_ORE), maxHeight)); spinnerCoalChance.setValue(resourcesSettings.getChance(BLK_COAL)); ((SpinnerNumberModel) spinnerCoalMinLevel.getModel()).setMaximum(maxHeight); spinnerCoalMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_COAL), maxHeight)); ((SpinnerNumberModel) spinnerCoalMaxLevel.getModel()).setMaximum(maxHeight); spinnerCoalMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_COAL), maxHeight)); spinnerLapisChance.setValue(resourcesSettings.getChance(BLK_LAPIS_LAZULI_ORE)); ((SpinnerNumberModel) spinnerLapisMinLevel.getModel()).setMaximum(maxHeight); spinnerLapisMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_LAPIS_LAZULI_ORE), maxHeight)); ((SpinnerNumberModel) spinnerLapisMaxLevel.getModel()).setMaximum(maxHeight); spinnerLapisMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_LAPIS_LAZULI_ORE), maxHeight)); spinnerDiamondChance.setValue(resourcesSettings.getChance(BLK_DIAMOND_ORE)); ((SpinnerNumberModel) spinnerDiamondMinLevel.getModel()).setMaximum(maxHeight); spinnerDiamondMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_DIAMOND_ORE), maxHeight)); ((SpinnerNumberModel) spinnerDiamondMaxLevel.getModel()).setMaximum(maxHeight); spinnerDiamondMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_DIAMOND_ORE), maxHeight)); spinnerRedstoneChance.setValue(resourcesSettings.getChance(BLK_REDSTONE_ORE)); ((SpinnerNumberModel) spinnerRedstoneMinLevel.getModel()).setMaximum(maxHeight); spinnerRedstoneMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_REDSTONE_ORE), maxHeight)); ((SpinnerNumberModel) spinnerRedstoneMaxLevel.getModel()).setMaximum(maxHeight); spinnerRedstoneMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_REDSTONE_ORE), maxHeight)); spinnerWaterChance.setValue(resourcesSettings.getChance(BLK_WATER)); ((SpinnerNumberModel) spinnerWaterMinLevel.getModel()).setMaximum(maxHeight); spinnerWaterMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_WATER), maxHeight)); ((SpinnerNumberModel) spinnerWaterMaxLevel.getModel()).setMaximum(maxHeight); spinnerWaterMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_WATER), maxHeight)); spinnerLavaChance.setValue(resourcesSettings.getChance(BLK_LAVA)); ((SpinnerNumberModel) spinnerLavaMinLevel.getModel()).setMaximum(maxHeight); spinnerLavaMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_LAVA), maxHeight)); ((SpinnerNumberModel) spinnerLavaMaxLevel.getModel()).setMaximum(maxHeight); spinnerLavaMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_LAVA), maxHeight)); spinnerDirtChance.setValue(resourcesSettings.getChance(BLK_DIRT)); ((SpinnerNumberModel) spinnerDirtMinLevel.getModel()).setMaximum(maxHeight); spinnerDirtMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_DIRT), maxHeight)); ((SpinnerNumberModel) spinnerDirtMaxLevel.getModel()).setMaximum(maxHeight); spinnerDirtMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_DIRT), maxHeight)); spinnerGravelChance.setValue(resourcesSettings.getChance(BLK_GRAVEL)); ((SpinnerNumberModel) spinnerGravelMinLevel.getModel()).setMaximum(maxHeight); spinnerGravelMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_GRAVEL), maxHeight)); ((SpinnerNumberModel) spinnerGravelMaxLevel.getModel()).setMaximum(maxHeight); spinnerGravelMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_GRAVEL), maxHeight)); spinnerEmeraldChance.setValue(resourcesSettings.getChance(BLK_EMERALD_ORE)); ((SpinnerNumberModel) spinnerEmeraldMinLevel.getModel()).setMaximum(maxHeight); spinnerEmeraldMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_EMERALD_ORE), maxHeight)); ((SpinnerNumberModel) spinnerEmeraldMaxLevel.getModel()).setMaximum(maxHeight); spinnerEmeraldMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_EMERALD_ORE), maxHeight)); spinnerQuartzChance.setValue(resourcesSettings.getChance(BLK_QUARTZ_ORE)); ((SpinnerNumberModel) spinnerQuartzMinLevel.getModel()).setMaximum(maxHeight); spinnerQuartzMinLevel.setValue(clamp(resourcesSettings.getMinLevel(BLK_QUARTZ_ORE), maxHeight)); ((SpinnerNumberModel) spinnerQuartzMaxLevel.getModel()).setMaximum(maxHeight); spinnerQuartzMaxLevel.setValue(clamp(resourcesSettings.getMaxLevel(BLK_QUARTZ_ORE), maxHeight)); // terrain ranges if (mode != Mode.EXPORT) { if ((dimension.getTileFactory() instanceof HeightMapTileFactory) && (((HeightMapTileFactory) dimension.getTileFactory()).getTheme() instanceof SimpleTheme) && (((SimpleTheme) ((HeightMapTileFactory) dimension.getTileFactory()).getTheme()).getTerrainRanges() != null)) { themeEditor.setTheme((SimpleTheme) ((HeightMapTileFactory) dimension.getTileFactory()).getTheme()); } else { jTabbedPane1.setEnabledAt(1, false); } } // annotations AnnotationsSettings annotationsSettings = (AnnotationsSettings) dimension.getLayerSettings(Annotations.INSTANCE); if (annotationsSettings == null) { annotationsSettings = new AnnotationsSettings(); } checkBoxExportAnnotations.setSelected(annotationsSettings.isExport()); // custom layers if (mode == Mode.EXPORT) { Set<CustomLayer> customLayers = App.getInstance().getCustomLayers(); // if (! customLayers.isEmpty()) { customLayersTableModel = new CustomLayersTableModel(customLayers); tableCustomLayers.setModel(customLayersTableModel); // } else { // jTabbedPane1.setEnabledAt(5, false); // } } setControlStates(); } private int clamp(int value, int maxValue) { if (value < 0) { return 0; } else if (value > maxValue) { return maxValue; } else { return value; } } private void setControlStates() { boolean enabled = isEnabled(); boolean dim0 = (dimension != null) && (dimension.getDim() == Constants.DIM_NORMAL); boolean ceiling = (dimension != null) && (dimension.getDim() < 0); radioButtonLavaBorder.setEnabled(enabled && (! ceiling)); radioButtonNoBorder.setEnabled(enabled && (! ceiling)); radioButtonVoidBorder.setEnabled(enabled && (! ceiling)); radioButtonWaterBorder.setEnabled(enabled && (! ceiling)); spinnerBorderLevel.setEnabled(enabled && (! ceiling) && (radioButtonLavaBorder.isSelected() || radioButtonWaterBorder.isSelected())); radioButtonFixedBorder.setEnabled(enabled && (! ceiling) && (! radioButtonNoBorder.isSelected())); radioButtonEndlessBorder.setEnabled(enabled && dim0 && (! ceiling) && (! radioButtonNoBorder.isSelected())); spinnerBorderSize.setEnabled(enabled && (! ceiling) && (! radioButtonNoBorder.isSelected()) && radioButtonFixedBorder.isSelected()); checkBoxBedrockWall.setEnabled(enabled && (! ceiling) && (radioButtonNoBorder.isSelected() || radioButtonFixedBorder.isSelected())); sliderCavernsEverywhereLevel.setEnabled(enabled && checkBoxCavernsEverywhere.isSelected()); sliderChasmsEverywhereLevel.setEnabled(enabled && checkBoxChasmsEverywhere.isSelected()); spinnerCavernsFloodLevel.setEnabled(enabled && checkBoxFloodCaverns.isSelected()); checkBoxCavernsFloodWithLava.setEnabled(enabled && checkBoxFloodCaverns.isSelected()); sliderDeciduousLevel.setEnabled(enabled && checkBoxDeciduousEverywhere.isSelected()); sliderPineLevel.setEnabled(enabled && checkBoxPineEverywhere.isSelected()); sliderJungleLevel.setEnabled(enabled && checkBoxJungleEverywhere.isSelected()); jSlider6.setEnabled(enabled && checkBoxSwamplandEverywhere.isSelected()); jSlider4.setEnabled(enabled && jCheckBox8.isSelected()); spinnerMinecraftSeed.setEnabled((mode != Mode.DEFAULT_SETTINGS) && enabled && dim0); checkBoxPopulate.setEnabled(enabled && dim0); checkBoxCavernsRemoveWater.setEnabled(enabled && (checkBoxCavernsBreakSurface.isSelected() || checkBoxChasmsBreakSurface.isSelected())); spinnerCeilingHeight.setEnabled(enabled && ceiling); int selectedRow = tableCustomLayers.getSelectedRow(); buttonCustomLayerUp.setEnabled(enabled && (selectedRow != -1) && (! customLayersTableModel.isHeaderRow(selectedRow)) && (selectedRow > 0) && (! customLayersTableModel.isHeaderRow(selectedRow - 1))); buttonCustomLayerDown.setEnabled(enabled && (selectedRow != -1) && (! customLayersTableModel.isHeaderRow(selectedRow)) && (selectedRow < (tableCustomLayers.getRowCount() - 1)) && (! customLayersTableModel.isHeaderRow(selectedRow + 1))); } private void addListeners(final JSpinner minSpinner, final JSpinner maxSpinner) { minSpinner.addChangeListener(e -> { int newMinValue = (Integer) minSpinner.getValue(); int currentMaxValue = (Integer) maxSpinner.getValue(); if (newMinValue > currentMaxValue) { maxSpinner.setValue(newMinValue); } }); maxSpinner.addChangeListener(e -> { int newMaxValue = (Integer) maxSpinner.getValue(); int currentMinValue = (Integer) minSpinner.getValue(); if (newMaxValue < currentMinValue) { minSpinner.setValue(newMaxValue); } }); } private void notifyBorderListeners() { Dimension.Border newBorder = getSelectedBorder(); for (BorderListener borderListener: borderListeners) { borderListener.borderChanged(newBorder); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { buttonGroup1 = new javax.swing.ButtonGroup(); buttonGroup2 = new javax.swing.ButtonGroup(); buttonGroup3 = new javax.swing.ButtonGroup(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); radioButtonWaterBorder = new javax.swing.JRadioButton(); radioButtonNoBorder = new javax.swing.JRadioButton(); radioButtonVoidBorder = new javax.swing.JRadioButton(); jLabel4 = new javax.swing.JLabel(); radioButtonLavaBorder = new javax.swing.JRadioButton(); jLabel5 = new javax.swing.JLabel(); spinnerBorderLevel = new javax.swing.JSpinner(); checkBoxBedrockWall = new javax.swing.JCheckBox(); jLabel6 = new javax.swing.JLabel(); comboBoxSubsurfaceMaterial = new javax.swing.JComboBox(); jLabel7 = new javax.swing.JLabel(); spinnerMinecraftSeed = new javax.swing.JSpinner(); jLabel8 = new javax.swing.JLabel(); spinnerBorderSize = new javax.swing.JSpinner(); jLabel9 = new javax.swing.JLabel(); jLabel44 = new javax.swing.JLabel(); jLabel65 = new javax.swing.JLabel(); spinnerMinSurfaceDepth = new javax.swing.JSpinner(); jLabel66 = new javax.swing.JLabel(); spinnerMaxSurfaceDepth = new javax.swing.JSpinner(); checkBoxBottomless = new javax.swing.JCheckBox(); jLabel67 = new javax.swing.JLabel(); checkBoxCoverSteepTerrain = new javax.swing.JCheckBox(); jLabel78 = new javax.swing.JLabel(); spinnerCeilingHeight = new javax.swing.JSpinner(); jPanel6 = new javax.swing.JPanel(); jLabel79 = new javax.swing.JLabel(); spinnerMcBorderCentreX = new javax.swing.JSpinner(); jLabel80 = new javax.swing.JLabel(); spinnerMcBorderCentreY = new javax.swing.JSpinner(); jLabel81 = new javax.swing.JLabel(); spinnerMcBorderSize = new javax.swing.JSpinner(); jLabel85 = new javax.swing.JLabel(); jLabel86 = new javax.swing.JLabel(); jLabel90 = new javax.swing.JLabel(); radioButtonFixedBorder = new javax.swing.JRadioButton(); radioButtonEndlessBorder = new javax.swing.JRadioButton(); jPanel5 = new javax.swing.JPanel(); themeEditor = new org.pepsoft.worldpainter.themes.impl.simple.SimpleThemeEditor(); jLabel45 = new javax.swing.JLabel(); jLabel46 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); checkBoxCavernsEverywhere = new javax.swing.JCheckBox(); sliderCavernsEverywhereLevel = new javax.swing.JSlider(); sliderChasmsEverywhereLevel = new javax.swing.JSlider(); checkBoxChasmsEverywhere = new javax.swing.JCheckBox(); jSeparator1 = new javax.swing.JSeparator(); checkBoxFloodCaverns = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); spinnerCavernsFloodLevel = new javax.swing.JSpinner(); checkBoxCavernsFloodWithLava = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); checkBoxCavernsBreakSurface = new javax.swing.JCheckBox(); checkBoxCavernsRemoveWater = new javax.swing.JCheckBox(); checkBoxChasmsBreakSurface = new javax.swing.JCheckBox(); jLabel70 = new javax.swing.JLabel(); jLabel71 = new javax.swing.JLabel(); spinnerCavernsMinLevel = new javax.swing.JSpinner(); spinnerCavernsMaxLevel = new javax.swing.JSpinner(); jLabel73 = new javax.swing.JLabel(); spinnerChasmsMinLevel = new javax.swing.JSpinner(); jLabel72 = new javax.swing.JLabel(); spinnerChasmsMaxLevel = new javax.swing.JSpinner(); jPanel4 = new javax.swing.JPanel(); jCheckBox8 = new javax.swing.JCheckBox(); jSlider4 = new javax.swing.JSlider(); jSeparator2 = new javax.swing.JSeparator(); jLabel10 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); spinnerGoldChance = new javax.swing.JSpinner(); jLabel13 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); spinnerGoldMaxLevel = new javax.swing.JSpinner(); jLabel15 = new javax.swing.JLabel(); spinnerIronChance = new javax.swing.JSpinner(); spinnerIronMaxLevel = new javax.swing.JSpinner(); jLabel16 = new javax.swing.JLabel(); spinnerCoalChance = new javax.swing.JSpinner(); spinnerCoalMaxLevel = new javax.swing.JSpinner(); jLabel17 = new javax.swing.JLabel(); spinnerLapisChance = new javax.swing.JSpinner(); spinnerLapisMaxLevel = new javax.swing.JSpinner(); jLabel18 = new javax.swing.JLabel(); spinnerDiamondChance = new javax.swing.JSpinner(); spinnerDiamondMaxLevel = new javax.swing.JSpinner(); jLabel19 = new javax.swing.JLabel(); spinnerRedstoneChance = new javax.swing.JSpinner(); spinnerRedstoneMaxLevel = new javax.swing.JSpinner(); jLabel20 = new javax.swing.JLabel(); spinnerWaterChance = new javax.swing.JSpinner(); spinnerWaterMaxLevel = new javax.swing.JSpinner(); jLabel21 = new javax.swing.JLabel(); spinnerLavaChance = new javax.swing.JSpinner(); jLabel22 = new javax.swing.JLabel(); jLabel23 = new javax.swing.JLabel(); jLabel24 = new javax.swing.JLabel(); jLabel25 = new javax.swing.JLabel(); jLabel26 = new javax.swing.JLabel(); jLabel27 = new javax.swing.JLabel(); jLabel28 = new javax.swing.JLabel(); jLabel29 = new javax.swing.JLabel(); jLabel30 = new javax.swing.JLabel(); spinnerDirtChance = new javax.swing.JSpinner(); jLabel31 = new javax.swing.JLabel(); spinnerLavaMaxLevel = new javax.swing.JSpinner(); spinnerDirtMaxLevel = new javax.swing.JSpinner(); jLabel32 = new javax.swing.JLabel(); spinnerGravelChance = new javax.swing.JSpinner(); jLabel33 = new javax.swing.JLabel(); spinnerGravelMaxLevel = new javax.swing.JSpinner(); jLabel34 = new javax.swing.JLabel(); jLabel35 = new javax.swing.JLabel(); jLabel36 = new javax.swing.JLabel(); jLabel37 = new javax.swing.JLabel(); jLabel38 = new javax.swing.JLabel(); jLabel39 = new javax.swing.JLabel(); jLabel40 = new javax.swing.JLabel(); jLabel41 = new javax.swing.JLabel(); jLabel42 = new javax.swing.JLabel(); jLabel43 = new javax.swing.JLabel(); jSeparator3 = new javax.swing.JSeparator(); jLabel3 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel51 = new javax.swing.JLabel(); spinnerEmeraldChance = new javax.swing.JSpinner(); jLabel52 = new javax.swing.JLabel(); spinnerEmeraldMaxLevel = new javax.swing.JSpinner(); jLabel53 = new javax.swing.JLabel(); spinnerGoldMinLevel = new javax.swing.JSpinner(); spinnerIronMinLevel = new javax.swing.JSpinner(); spinnerCoalMinLevel = new javax.swing.JSpinner(); spinnerLapisMinLevel = new javax.swing.JSpinner(); spinnerDiamondMinLevel = new javax.swing.JSpinner(); spinnerEmeraldMinLevel = new javax.swing.JSpinner(); spinnerWaterMinLevel = new javax.swing.JSpinner(); spinnerLavaMinLevel = new javax.swing.JSpinner(); spinnerDirtMinLevel = new javax.swing.JSpinner(); spinnerGravelMinLevel = new javax.swing.JSpinner(); spinnerRedstoneMinLevel = new javax.swing.JSpinner(); jLabel54 = new javax.swing.JLabel(); jLabel55 = new javax.swing.JLabel(); jLabel56 = new javax.swing.JLabel(); jLabel57 = new javax.swing.JLabel(); jLabel58 = new javax.swing.JLabel(); jLabel59 = new javax.swing.JLabel(); jLabel60 = new javax.swing.JLabel(); jLabel61 = new javax.swing.JLabel(); jLabel62 = new javax.swing.JLabel(); jLabel63 = new javax.swing.JLabel(); jLabel64 = new javax.swing.JLabel(); jLabel74 = new javax.swing.JLabel(); spinnerQuartzChance = new javax.swing.JSpinner(); jLabel75 = new javax.swing.JLabel(); spinnerQuartzMinLevel = new javax.swing.JSpinner(); jLabel77 = new javax.swing.JLabel(); spinnerQuartzMaxLevel = new javax.swing.JSpinner(); jLabel76 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); checkBoxPopulate = new javax.swing.JCheckBox(); checkBoxDeciduousEverywhere = new javax.swing.JCheckBox(); sliderDeciduousLevel = new javax.swing.JSlider(); checkBoxFrostEverywhere = new javax.swing.JCheckBox(); checkBoxPineEverywhere = new javax.swing.JCheckBox(); sliderPineLevel = new javax.swing.JSlider(); checkBoxSmoothSnow = new javax.swing.JCheckBox(); jLabel47 = new javax.swing.JLabel(); jLabel48 = new javax.swing.JLabel(); jLabel49 = new javax.swing.JLabel(); jLabel50 = new javax.swing.JLabel(); checkBoxJungleEverywhere = new javax.swing.JCheckBox(); jLabel68 = new javax.swing.JLabel(); sliderJungleLevel = new javax.swing.JSlider(); checkBoxSwamplandEverywhere = new javax.swing.JCheckBox(); jLabel69 = new javax.swing.JLabel(); jSlider6 = new javax.swing.JSlider(); checkBoxSnowUnderTrees = new javax.swing.JCheckBox(); checkBoxExportAnnotations = new javax.swing.JCheckBox(); jPanel7 = new javax.swing.JPanel(); jLabel82 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); tableCustomLayers = new javax.swing.JTable(); buttonCustomLayerUp = new javax.swing.JButton(); buttonCustomLayerDown = new javax.swing.JButton(); buttonGroup1.add(radioButtonWaterBorder); radioButtonWaterBorder.setText("Water"); radioButtonWaterBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonWaterBorderActionPerformed(evt); } }); buttonGroup1.add(radioButtonNoBorder); radioButtonNoBorder.setText("No border"); radioButtonNoBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonNoBorderActionPerformed(evt); } }); buttonGroup1.add(radioButtonVoidBorder); radioButtonVoidBorder.setText("Void"); radioButtonVoidBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonVoidBorderActionPerformed(evt); } }); jLabel4.setText("Border:"); buttonGroup1.add(radioButtonLavaBorder); radioButtonLavaBorder.setText("Lava"); radioButtonLavaBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonLavaBorderActionPerformed(evt); } }); jLabel5.setText("Water or lava level:"); spinnerBorderLevel.setModel(new javax.swing.SpinnerNumberModel(62, 0, 127, 1)); spinnerBorderLevel.setEnabled(false); checkBoxBedrockWall.setText("Bedrock wall"); jLabel6.setText("Underground material:"); comboBoxSubsurfaceMaterial.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboBoxSubsurfaceMaterial.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboBoxSubsurfaceMaterialActionPerformed(evt); } }); jLabel7.setText("Minecraft seed:"); spinnerMinecraftSeed.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(-9223372036854775808L), null, null, Long.valueOf(1L))); spinnerMinecraftSeed.setEditor(new javax.swing.JSpinner.NumberEditor(spinnerMinecraftSeed, "0")); jLabel8.setLabelFor(spinnerBorderSize); jLabel8.setText("Border size:"); spinnerBorderSize.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(256), Integer.valueOf(128), null, Integer.valueOf(128))); spinnerBorderSize.setEnabled(false); spinnerBorderSize.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerBorderSizeStateChanged(evt); } }); jLabel9.setText("blocks (in multiples of 128)"); jLabel44.setText("(Minecraft default: 62)"); jLabel65.setText("Top layer minimum depth:"); spinnerMinSurfaceDepth.setModel(new javax.swing.SpinnerNumberModel(3, 1, 255, 1)); spinnerMinSurfaceDepth.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerMinSurfaceDepthStateChanged(evt); } }); jLabel66.setText(", maximum depth:"); spinnerMaxSurfaceDepth.setModel(new javax.swing.SpinnerNumberModel(7, 1, 255, 1)); spinnerMaxSurfaceDepth.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerMaxSurfaceDepthStateChanged(evt); } }); checkBoxBottomless.setText("Bottomless world"); checkBoxBottomless.setToolTipText("<html>Generate a bottomless map:\n<ul><li>No bedrock at the bottom of the map\n<li>Caverns and chasms are open to the void</html>"); jLabel67.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/information.png"))); // NOI18N jLabel67.setText(" "); jLabel67.setToolTipText("<html>Generate a bottomless map:\n<ul><li>No bedrock at the bottom of the map\n<li>Caverns and chasms are open to the void</html>"); checkBoxCoverSteepTerrain.setText("keep steep terrain covered"); checkBoxCoverSteepTerrain.setToolTipText("<html>Enable this to extend the top layer<br>\ndownwards on steep terrain such as cliffs <br>\nso that the underground material is never exposed.</html>"); jLabel78.setText("Ceiling height:"); spinnerCeilingHeight.setModel(new javax.swing.SpinnerNumberModel(256, 1, 256, 1)); jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Minecraft World Border")); jLabel79.setText("Centre:"); spinnerMcBorderCentreX.setModel(new javax.swing.SpinnerNumberModel(0, -99999, 99999, 1)); jLabel80.setText(", "); spinnerMcBorderCentreY.setModel(new javax.swing.SpinnerNumberModel(0, -99999, 99999, 1)); jLabel81.setText("Size:"); spinnerMcBorderSize.setModel(new javax.swing.SpinnerNumberModel(0, 0, 60000000, 1)); jLabel85.setText(" blocks"); jLabel86.setText(" blocks"); jLabel90.setText("(Applies to all dimensions)"); javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel79) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMcBorderCentreX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel80) .addGap(0, 0, 0) .addComponent(spinnerMcBorderCentreY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel85)) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel81) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMcBorderSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel86)) .addComponent(jLabel90)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel6Layout.setVerticalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel90) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel79) .addComponent(spinnerMcBorderCentreX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel80) .addComponent(spinnerMcBorderCentreY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel85)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel81) .addComponent(spinnerMcBorderSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel86)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); buttonGroup3.add(radioButtonFixedBorder); radioButtonFixedBorder.setSelected(true); radioButtonFixedBorder.setText("fixed:"); radioButtonFixedBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonFixedBorderActionPerformed(evt); } }); buttonGroup3.add(radioButtonEndlessBorder); radioButtonEndlessBorder.setText("endless"); radioButtonEndlessBorder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonEndlessBorderActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(comboBoxSubsurfaceMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel65) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMinSurfaceDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel66) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMaxSurfaceDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(checkBoxCoverSteepTerrain)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(checkBoxBottomless) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel67) .addGap(18, 18, 18) .addComponent(jLabel78) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCeilingHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMinecraftSeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel4) .addComponent(radioButtonNoBorder) .addComponent(radioButtonVoidBorder) .addComponent(radioButtonLavaBorder) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(radioButtonWaterBorder) .addComponent(jLabel8)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(radioButtonEndlessBorder) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(radioButtonFixedBorder) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(spinnerBorderSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel9)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerBorderLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel44)))))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(checkBoxBedrockWall)) .addContainerGap(114, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel65) .addComponent(spinnerMinSurfaceDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel66) .addComponent(spinnerMaxSurfaceDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(checkBoxCoverSteepTerrain)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(comboBoxSubsurfaceMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxBottomless) .addComponent(jLabel67, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel78) .addComponent(spinnerCeilingHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(19, 19, 19) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonNoBorder) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonVoidBorder) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(radioButtonWaterBorder) .addComponent(jLabel5) .addComponent(spinnerBorderLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(radioButtonLavaBorder) .addComponent(jLabel44)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(spinnerBorderSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel9) .addComponent(radioButtonFixedBorder))) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonEndlessBorder) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxBedrockWall) .addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(spinnerMinecraftSeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("General", jPanel1); jLabel45.setText("These are the default terrain types and layers used by the Mountain tool, and when resetting the"); jLabel46.setText("terrain to the default by right-clicking with a terrain type selected:"); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(themeEditor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel46, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel45, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel45) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel46) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(themeEditor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); jTabbedPane1.addTab("Theme", jPanel5); checkBoxCavernsEverywhere.setText("Caverns everywhere"); checkBoxCavernsEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxCavernsEverywhereActionPerformed(evt); } }); sliderCavernsEverywhereLevel.setMajorTickSpacing(1); sliderCavernsEverywhereLevel.setMaximum(15); sliderCavernsEverywhereLevel.setMinimum(1); sliderCavernsEverywhereLevel.setPaintTicks(true); sliderCavernsEverywhereLevel.setSnapToTicks(true); sliderCavernsEverywhereLevel.setValue(8); sliderChasmsEverywhereLevel.setMajorTickSpacing(1); sliderChasmsEverywhereLevel.setMaximum(15); sliderChasmsEverywhereLevel.setMinimum(1); sliderChasmsEverywhereLevel.setPaintTicks(true); sliderChasmsEverywhereLevel.setSnapToTicks(true); sliderChasmsEverywhereLevel.setValue(8); checkBoxChasmsEverywhere.setText("Chasms everywhere"); checkBoxChasmsEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxChasmsEverywhereActionPerformed(evt); } }); checkBoxFloodCaverns.setText("Flood the caverns and chasms"); checkBoxFloodCaverns.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxFloodCavernsActionPerformed(evt); } }); jLabel1.setText("Level:"); spinnerCavernsFloodLevel.setModel(new javax.swing.SpinnerNumberModel(16, 1, 127, 1)); checkBoxCavernsFloodWithLava.setText("Lava instead of water:"); checkBoxCavernsFloodWithLava.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); jLabel2.setText("Settings for the Caverns and Chasms layers. These apply also to hand-painted Caverns and Chasms:"); checkBoxCavernsBreakSurface.setText("Caverns break the surface"); checkBoxCavernsBreakSurface.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxCavernsBreakSurfaceActionPerformed(evt); } }); checkBoxCavernsRemoveWater.setSelected(true); checkBoxCavernsRemoveWater.setText("Remove water and lava above openings"); checkBoxCavernsRemoveWater.setEnabled(false); checkBoxChasmsBreakSurface.setText("Chasms break the surface"); checkBoxChasmsBreakSurface.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxChasmsBreakSurfaceActionPerformed(evt); } }); jLabel70.setText("Caverns min. level:"); jLabel71.setText("Caverns max. level:"); spinnerCavernsMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 255, 1)); spinnerCavernsMaxLevel.setModel(new javax.swing.SpinnerNumberModel(255, 0, 255, 1)); jLabel73.setText("Chasms min. level:"); spinnerChasmsMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 255, 1)); jLabel72.setText("Chasms max. level:"); spinnerChasmsMaxLevel.setModel(new javax.swing.SpinnerNumberModel(255, 0, 255, 1)); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkBoxCavernsEverywhere) .addComponent(jLabel2) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(12, 12, 12) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkBoxCavernsRemoveWater) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(sliderCavernsEverywhereLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(12, 12, 12) .addComponent(sliderChasmsEverywhereLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(checkBoxChasmsEverywhere))) .addComponent(checkBoxCavernsFloodWithLava) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCavernsFloodLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 442, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkBoxFloodCaverns) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel70) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCavernsMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(checkBoxCavernsBreakSurface) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel71) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCavernsMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel72) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerChasmsMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(checkBoxChasmsBreakSurface) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel73) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerChasmsMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(checkBoxCavernsEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sliderCavernsEverywhereLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(checkBoxChasmsEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sliderChasmsEverywhereLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(18, 18, 18) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel70) .addComponent(spinnerCavernsMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel73) .addComponent(spinnerChasmsMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel71) .addComponent(spinnerCavernsMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel72) .addComponent(spinnerChasmsMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(checkBoxFloodCaverns) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(spinnerCavernsFloodLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxCavernsFloodWithLava) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxCavernsBreakSurface) .addComponent(checkBoxChasmsBreakSurface)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxCavernsRemoveWater) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Caverns and Chasms", new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/caverns.png")), jPanel3); // NOI18N jCheckBox8.setText("Resources everywhere"); jCheckBox8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox8ActionPerformed(evt); } }); jSlider4.setMajorTickSpacing(1); jSlider4.setMaximum(15); jSlider4.setMinimum(1); jSlider4.setPaintTicks(true); jSlider4.setSnapToTicks(true); jSlider4.setValue(8); jLabel10.setText("Settings for the Resources layer at 50% intensity. These also apply to hand-painted Resources:"); jLabel12.setText("Gold:"); spinnerGoldChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel13.setText("Occurrence:"); jLabel14.setText("Levels:"); spinnerGoldMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel15.setText("Iron:"); spinnerIronChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerIronMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel16.setText("Coal:"); spinnerCoalChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerCoalMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel17.setText("Lapis Lazuli:"); spinnerLapisChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerLapisMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel18.setText("Diamond:"); spinnerDiamondChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerDiamondMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel19.setText("Redstone:"); spinnerRedstoneChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerRedstoneMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel20.setText("Water:"); spinnerWaterChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); spinnerWaterMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel21.setText("Lava:"); spinnerLavaChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel22.setText("‰"); jLabel23.setText("‰"); jLabel24.setText("‰"); jLabel25.setText("‰"); jLabel26.setText("‰"); jLabel27.setText("‰"); jLabel28.setText("‰"); jLabel29.setText("‰"); jLabel30.setText("Dirt:"); spinnerDirtChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel31.setText("‰"); spinnerLavaMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); spinnerDirtMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel32.setText("Gravel:"); spinnerGravelChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel33.setText("‰"); spinnerGravelMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel34.setText("blocks"); jLabel35.setText("blocks"); jLabel36.setText("blocks"); jLabel37.setText("blocks"); jLabel38.setText("blocks"); jLabel39.setText("blocks"); jLabel40.setText("blocks"); jLabel41.setText("blocks"); jLabel42.setText("blocks"); jLabel43.setText("blocks"); jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL); jLabel3.setText("Occurrence:"); jLabel11.setText("Levels:"); jLabel51.setText("Emerald:"); spinnerEmeraldChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel52.setText("‰"); spinnerEmeraldMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel53.setText("blocks"); spinnerGoldMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerIronMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerCoalMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerLapisMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerDiamondMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerEmeraldMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerWaterMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerLavaMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerDirtMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerGravelMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); spinnerRedstoneMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); jLabel54.setText("-"); jLabel55.setText("-"); jLabel56.setText("-"); jLabel57.setText("-"); jLabel58.setText("-"); jLabel59.setText("-"); jLabel60.setText("-"); jLabel61.setText("-"); jLabel62.setText("-"); jLabel63.setText("-"); jLabel64.setText("-"); jLabel74.setText("Quartz:"); spinnerQuartzChance.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel75.setText("‰"); spinnerQuartzMinLevel.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1)); jLabel77.setText("-"); spinnerQuartzMaxLevel.setModel(new javax.swing.SpinnerNumberModel(1, 0, 127, 1)); jLabel76.setText("blocks"); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(jPanel4Layout.createSequentialGroup() .addGap(12, 12, 12) .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jCheckBox8) .addComponent(jLabel10) .addComponent(jSeparator2) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel12) .addComponent(jLabel15) .addComponent(jLabel16) .addComponent(jLabel17) .addComponent(jLabel18)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel13) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerGoldChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel22)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerIronChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel23)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerCoalChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel24)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerLapisChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel25)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerDiamondChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel26)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerEmeraldChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel52)))) .addComponent(jLabel51)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel14) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerDiamondMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel58) .addGap(0, 0, 0) .addComponent(spinnerDiamondMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel38)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerLapisMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel57) .addGap(0, 0, 0) .addComponent(spinnerLapisMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel37)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerCoalMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel56) .addGap(0, 0, 0) .addComponent(spinnerCoalMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel36)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerIronMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel55) .addGap(0, 0, 0) .addComponent(spinnerIronMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel35)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerGoldMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel54) .addGap(0, 0, 0) .addComponent(spinnerGoldMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel34)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerEmeraldMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel59) .addGap(0, 0, 0) .addComponent(spinnerEmeraldMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel53))) .addGap(18, 18, 18) .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel20) .addComponent(jLabel21) .addComponent(jLabel30) .addComponent(jLabel32) .addComponent(jLabel19) .addComponent(jLabel74)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerWaterChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel28)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerLavaChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel29)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerDirtChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel31)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerGravelChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel33)) .addComponent(jLabel3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel11) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerGravelMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel63) .addGap(0, 0, 0) .addComponent(spinnerGravelMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel43)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerDirtMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel62) .addGap(0, 0, 0) .addComponent(spinnerDirtMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel42)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerLavaMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel61) .addGap(0, 0, 0) .addComponent(spinnerLavaMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel41)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerWaterMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel60) .addGap(0, 0, 0) .addComponent(spinnerWaterMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel40)))) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerRedstoneChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel27) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerRedstoneMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel64) .addGap(0, 0, 0) .addComponent(spinnerRedstoneMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel39)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(spinnerQuartzChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel75) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerQuartzMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel77) .addGap(0, 0, 0) .addComponent(spinnerQuartzMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jLabel76))))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jCheckBox8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel10) .addGap(18, 18, 18) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel13) .addComponent(jLabel14) .addComponent(jLabel3) .addComponent(jLabel11)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel12) .addComponent(spinnerGoldChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerGoldMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel22) .addComponent(jLabel34) .addComponent(spinnerGoldMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel54)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel15) .addComponent(spinnerIronChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerIronMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel23) .addComponent(jLabel35) .addComponent(spinnerIronMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel55)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel16) .addComponent(spinnerCoalChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerCoalMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel24) .addComponent(jLabel36) .addComponent(spinnerCoalMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel56)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel17) .addComponent(spinnerLapisChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerLapisMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel25) .addComponent(jLabel37) .addComponent(spinnerLapisMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel57)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel18) .addComponent(spinnerDiamondChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerDiamondMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel26) .addComponent(jLabel38) .addComponent(spinnerDiamondMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel58))) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20) .addComponent(spinnerWaterChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerWaterMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel28) .addComponent(jLabel40) .addComponent(spinnerWaterMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel60)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel21) .addComponent(spinnerLavaChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel29) .addComponent(spinnerLavaMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel41) .addComponent(spinnerLavaMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel61)) .addGap(6, 6, 6) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel30) .addComponent(spinnerDirtChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel31) .addComponent(spinnerDirtMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel42) .addComponent(spinnerDirtMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel62)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel32) .addComponent(spinnerGravelChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel33) .addComponent(spinnerGravelMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel43) .addComponent(spinnerGravelMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel63)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel19) .addComponent(spinnerRedstoneMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel27) .addComponent(jLabel39) .addComponent(spinnerRedstoneChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerRedstoneMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel64)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel51) .addComponent(spinnerEmeraldChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel52) .addComponent(spinnerEmeraldMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel53) .addComponent(spinnerEmeraldMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel59)) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerQuartzChance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel74) .addComponent(jLabel75) .addComponent(spinnerQuartzMinLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel77) .addComponent(spinnerQuartzMaxLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel76)))) .addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); jTabbedPane1.addTab("Resources", new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/resources.png")), jPanel4); // NOI18N checkBoxPopulate.setText("Allow Minecraft to populate the entire terrain"); checkBoxPopulate.setToolTipText("<html>This will mark the entire terrain as unpopulated, causing Minecraft to generate trees,<br/>\nwater and lava pools, pockets of dirt, gravel, coal, ore, etc. (but not caverns) as the<br/>\nchunks are loaded. This will slow down the initial loading of each chunk, and you have<br/>\nno control over where trees, snow, etc. appear.</html>"); checkBoxPopulate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxPopulateActionPerformed(evt); } }); checkBoxDeciduousEverywhere.setText("Deciduous forest everywhere"); checkBoxDeciduousEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxDeciduousEverywhereActionPerformed(evt); } }); sliderDeciduousLevel.setMajorTickSpacing(1); sliderDeciduousLevel.setMaximum(15); sliderDeciduousLevel.setMinimum(1); sliderDeciduousLevel.setPaintTicks(true); sliderDeciduousLevel.setSnapToTicks(true); sliderDeciduousLevel.setValue(8); checkBoxFrostEverywhere.setText("Frost everywhere"); checkBoxPineEverywhere.setText("Pine forest everywhere"); checkBoxPineEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxPineEverywhereActionPerformed(evt); } }); sliderPineLevel.setMajorTickSpacing(1); sliderPineLevel.setMaximum(15); sliderPineLevel.setMinimum(1); sliderPineLevel.setPaintTicks(true); sliderPineLevel.setSnapToTicks(true); sliderPineLevel.setValue(8); checkBoxSmoothSnow.setText("Smooth snow (also applies to hand-painted Frost layer)"); jLabel47.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/populate.png"))); // NOI18N jLabel48.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/deciduousforest.png"))); // NOI18N jLabel49.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/pineforest.png"))); // NOI18N jLabel50.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/frost.png"))); // NOI18N checkBoxJungleEverywhere.setText("Jungle everywhere"); checkBoxJungleEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxJungleEverywhereActionPerformed(evt); } }); jLabel68.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/jungle.png"))); // NOI18N sliderJungleLevel.setMajorTickSpacing(1); sliderJungleLevel.setMaximum(15); sliderJungleLevel.setMinimum(1); sliderJungleLevel.setPaintTicks(true); sliderJungleLevel.setSnapToTicks(true); sliderJungleLevel.setValue(8); checkBoxSwamplandEverywhere.setText("Swampland everywhere"); checkBoxSwamplandEverywhere.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxSwamplandEverywhereActionPerformed(evt); } }); jLabel69.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/swampland.png"))); // NOI18N jSlider6.setMajorTickSpacing(1); jSlider6.setMaximum(15); jSlider6.setMinimum(1); jSlider6.setPaintTicks(true); jSlider6.setSnapToTicks(true); jSlider6.setValue(8); checkBoxSnowUnderTrees.setText("Frost under trees (also applies to hand-painted Frost layer)"); checkBoxExportAnnotations.setText("Export the annotations (as coloured wool)"); checkBoxExportAnnotations.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkBoxExportAnnotationsActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(checkBoxPopulate) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel47)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(checkBoxFrostEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel50)) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(12, 12, 12) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkBoxSmoothSnow) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(sliderDeciduousLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(sliderPineLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(67, 67, 67) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(checkBoxJungleEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel68)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(checkBoxSwamplandEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel69)) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(12, 12, 12) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSlider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(sliderJungleLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) .addComponent(checkBoxSnowUnderTrees))) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkBoxDeciduousEverywhere) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(checkBoxPineEverywhere) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel49))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel48)) .addComponent(checkBoxExportAnnotations)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxPopulate) .addComponent(jLabel47)) .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxDeciduousEverywhere) .addComponent(jLabel48)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sliderDeciduousLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxJungleEverywhere) .addComponent(jLabel68)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sliderJungleLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxPineEverywhere) .addComponent(jLabel49))) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(jLabel69)))) .addComponent(checkBoxSwamplandEverywhere, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(sliderPineLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jSlider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkBoxFrostEverywhere) .addComponent(jLabel50)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxSmoothSnow) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxSnowUnderTrees) .addGap(18, 18, 18) .addComponent(checkBoxExportAnnotations) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Other Layers", jPanel2); jLabel82.setText("<html>On this page you can configure the export order of your custom layers,<br>as well as prevent certain layers from being exported.</html>"); tableCustomLayers.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane1.setViewportView(tableCustomLayers); buttonCustomLayerUp.setText("Up"); buttonCustomLayerUp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCustomLayerUpActionPerformed(evt); } }); buttonCustomLayerDown.setText("Down"); buttonCustomLayerDown.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCustomLayerDownActionPerformed(evt); } }); javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); jPanel7.setLayout(jPanel7Layout); jPanel7Layout.setHorizontalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel82, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 618, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(buttonCustomLayerDown, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonCustomLayerUp, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); jPanel7Layout.setVerticalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel82, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(buttonCustomLayerUp) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonCustomLayerDown) .addGap(0, 226, Short.MAX_VALUE))) .addContainerGap()) ); jTabbedPane1.addTab("Custom Layers", jPanel7); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(0, 0, 0) .addComponent(jTabbedPane1)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); }// </editor-fold>//GEN-END:initComponents private void radioButtonWaterBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonWaterBorderActionPerformed setControlStates(); if ((Integer) spinnerBorderLevel.getValue() == (dimension.getMaxHeight() - 1)) { spinnerBorderLevel.setValue(dimension.getBorderLevel()); } notifyBorderListeners(); }//GEN-LAST:event_radioButtonWaterBorderActionPerformed private void radioButtonNoBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonNoBorderActionPerformed setControlStates(); notifyBorderListeners(); }//GEN-LAST:event_radioButtonNoBorderActionPerformed private void checkBoxPopulateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxPopulateActionPerformed if (checkBoxPopulate.isSelected() && jCheckBox8.isSelected()) { jCheckBox8.setSelected(false); setControlStates(); JOptionPane.showMessageDialog(this, "\"Resources everywhere\" disabled on the Resources tab,\nto avoid duplicate resources. You may enable it again manually.", "Resources Everywhere Disabled", JOptionPane.INFORMATION_MESSAGE); } }//GEN-LAST:event_checkBoxPopulateActionPerformed private void radioButtonVoidBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonVoidBorderActionPerformed setControlStates(); notifyBorderListeners(); }//GEN-LAST:event_radioButtonVoidBorderActionPerformed private void radioButtonLavaBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonLavaBorderActionPerformed setControlStates(); if ((Integer) spinnerBorderLevel.getValue() == (dimension.getMaxHeight() - 1)) { spinnerBorderLevel.setValue(dimension.getBorderLevel()); } notifyBorderListeners(); }//GEN-LAST:event_radioButtonLavaBorderActionPerformed private void comboBoxSubsurfaceMaterialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxSubsurfaceMaterialActionPerformed // if (comboBoxSubsurfaceMaterial.getSelectedItem() == Terrain.RESOURCES) { // // TODO: do something? // } }//GEN-LAST:event_comboBoxSubsurfaceMaterialActionPerformed private void checkBoxDeciduousEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxDeciduousEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxDeciduousEverywhereActionPerformed private void checkBoxPineEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxPineEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxPineEverywhereActionPerformed private void spinnerBorderSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerBorderSizeStateChanged int value = (Integer) spinnerBorderSize.getValue(); value = Math.round(value / 128f) * 128; if (value < 128) { value = 128; } spinnerBorderSize.setValue(value); }//GEN-LAST:event_spinnerBorderSizeStateChanged private void jCheckBox8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox8ActionPerformed setControlStates(); }//GEN-LAST:event_jCheckBox8ActionPerformed private void spinnerMinSurfaceDepthStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerMinSurfaceDepthStateChanged int topLevelMinDepth = (Integer) spinnerMinSurfaceDepth.getValue(); int topLevelMaxDepth = (Integer) spinnerMaxSurfaceDepth.getValue(); if (topLevelMinDepth > topLevelMaxDepth) { spinnerMaxSurfaceDepth.setValue(topLevelMinDepth); } }//GEN-LAST:event_spinnerMinSurfaceDepthStateChanged private void spinnerMaxSurfaceDepthStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerMaxSurfaceDepthStateChanged int topLevelMinDepth = (Integer) spinnerMinSurfaceDepth.getValue(); int topLevelMaxDepth = (Integer) spinnerMaxSurfaceDepth.getValue(); if (topLevelMaxDepth < topLevelMinDepth) { spinnerMinSurfaceDepth.setValue(topLevelMaxDepth); } }//GEN-LAST:event_spinnerMaxSurfaceDepthStateChanged private void checkBoxCavernsBreakSurfaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxCavernsBreakSurfaceActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxCavernsBreakSurfaceActionPerformed private void checkBoxFloodCavernsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxFloodCavernsActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxFloodCavernsActionPerformed private void checkBoxCavernsEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxCavernsEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxCavernsEverywhereActionPerformed private void checkBoxChasmsEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxChasmsEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxChasmsEverywhereActionPerformed private void checkBoxChasmsBreakSurfaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxChasmsBreakSurfaceActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxChasmsBreakSurfaceActionPerformed private void checkBoxJungleEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxJungleEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxJungleEverywhereActionPerformed private void checkBoxSwamplandEverywhereActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxSwamplandEverywhereActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxSwamplandEverywhereActionPerformed private void checkBoxExportAnnotationsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxExportAnnotationsActionPerformed setControlStates(); }//GEN-LAST:event_checkBoxExportAnnotationsActionPerformed private void buttonCustomLayerUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCustomLayerUpActionPerformed int rowIndex = tableCustomLayers.getSelectedRow(); customLayersTableModel.swap(rowIndex - 1, rowIndex); tableCustomLayers.getSelectionModel().setSelectionInterval(rowIndex - 1, rowIndex - 1); tableCustomLayers.scrollRectToVisible(tableCustomLayers.getCellRect(rowIndex - 1, 0, true)); setControlStates(); }//GEN-LAST:event_buttonCustomLayerUpActionPerformed private void buttonCustomLayerDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCustomLayerDownActionPerformed int rowIndex = tableCustomLayers.getSelectedRow(); customLayersTableModel.swap(rowIndex, rowIndex + 1); tableCustomLayers.getSelectionModel().setSelectionInterval(rowIndex + 1, rowIndex + 1); tableCustomLayers.scrollRectToVisible(tableCustomLayers.getCellRect(rowIndex + 1, 0, true)); setControlStates(); }//GEN-LAST:event_buttonCustomLayerDownActionPerformed private void radioButtonFixedBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonFixedBorderActionPerformed setControlStates(); notifyBorderListeners(); }//GEN-LAST:event_radioButtonFixedBorderActionPerformed private void radioButtonEndlessBorderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioButtonEndlessBorderActionPerformed setControlStates(); notifyBorderListeners(); }//GEN-LAST:event_radioButtonEndlessBorderActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonCustomLayerDown; private javax.swing.JButton buttonCustomLayerUp; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.ButtonGroup buttonGroup2; private javax.swing.ButtonGroup buttonGroup3; private javax.swing.JCheckBox checkBoxBedrockWall; private javax.swing.JCheckBox checkBoxBottomless; private javax.swing.JCheckBox checkBoxCavernsBreakSurface; private javax.swing.JCheckBox checkBoxCavernsEverywhere; private javax.swing.JCheckBox checkBoxCavernsFloodWithLava; private javax.swing.JCheckBox checkBoxCavernsRemoveWater; private javax.swing.JCheckBox checkBoxChasmsBreakSurface; private javax.swing.JCheckBox checkBoxChasmsEverywhere; private javax.swing.JCheckBox checkBoxCoverSteepTerrain; private javax.swing.JCheckBox checkBoxDeciduousEverywhere; private javax.swing.JCheckBox checkBoxExportAnnotations; private javax.swing.JCheckBox checkBoxFloodCaverns; private javax.swing.JCheckBox checkBoxFrostEverywhere; private javax.swing.JCheckBox checkBoxJungleEverywhere; private javax.swing.JCheckBox checkBoxPineEverywhere; private javax.swing.JCheckBox checkBoxPopulate; private javax.swing.JCheckBox checkBoxSmoothSnow; private javax.swing.JCheckBox checkBoxSnowUnderTrees; private javax.swing.JCheckBox checkBoxSwamplandEverywhere; private javax.swing.JComboBox comboBoxSubsurfaceMaterial; private javax.swing.JCheckBox jCheckBox8; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel31; private javax.swing.JLabel jLabel32; private javax.swing.JLabel jLabel33; private javax.swing.JLabel jLabel34; private javax.swing.JLabel jLabel35; private javax.swing.JLabel jLabel36; private javax.swing.JLabel jLabel37; private javax.swing.JLabel jLabel38; private javax.swing.JLabel jLabel39; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel40; private javax.swing.JLabel jLabel41; private javax.swing.JLabel jLabel42; private javax.swing.JLabel jLabel43; private javax.swing.JLabel jLabel44; private javax.swing.JLabel jLabel45; private javax.swing.JLabel jLabel46; private javax.swing.JLabel jLabel47; private javax.swing.JLabel jLabel48; private javax.swing.JLabel jLabel49; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel50; private javax.swing.JLabel jLabel51; private javax.swing.JLabel jLabel52; private javax.swing.JLabel jLabel53; private javax.swing.JLabel jLabel54; private javax.swing.JLabel jLabel55; private javax.swing.JLabel jLabel56; private javax.swing.JLabel jLabel57; private javax.swing.JLabel jLabel58; private javax.swing.JLabel jLabel59; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel60; private javax.swing.JLabel jLabel61; private javax.swing.JLabel jLabel62; private javax.swing.JLabel jLabel63; private javax.swing.JLabel jLabel64; private javax.swing.JLabel jLabel65; private javax.swing.JLabel jLabel66; private javax.swing.JLabel jLabel67; private javax.swing.JLabel jLabel68; private javax.swing.JLabel jLabel69; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel70; private javax.swing.JLabel jLabel71; private javax.swing.JLabel jLabel72; private javax.swing.JLabel jLabel73; private javax.swing.JLabel jLabel74; private javax.swing.JLabel jLabel75; private javax.swing.JLabel jLabel76; private javax.swing.JLabel jLabel77; private javax.swing.JLabel jLabel78; private javax.swing.JLabel jLabel79; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel80; private javax.swing.JLabel jLabel81; private javax.swing.JLabel jLabel82; private javax.swing.JLabel jLabel85; private javax.swing.JLabel jLabel86; private javax.swing.JLabel jLabel9; private javax.swing.JLabel jLabel90; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSlider jSlider4; private javax.swing.JSlider jSlider6; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JRadioButton radioButtonEndlessBorder; private javax.swing.JRadioButton radioButtonFixedBorder; private javax.swing.JRadioButton radioButtonLavaBorder; private javax.swing.JRadioButton radioButtonNoBorder; private javax.swing.JRadioButton radioButtonVoidBorder; private javax.swing.JRadioButton radioButtonWaterBorder; private javax.swing.JSlider sliderCavernsEverywhereLevel; private javax.swing.JSlider sliderChasmsEverywhereLevel; private javax.swing.JSlider sliderDeciduousLevel; private javax.swing.JSlider sliderJungleLevel; private javax.swing.JSlider sliderPineLevel; private javax.swing.JSpinner spinnerBorderLevel; private javax.swing.JSpinner spinnerBorderSize; private javax.swing.JSpinner spinnerCavernsFloodLevel; private javax.swing.JSpinner spinnerCavernsMaxLevel; private javax.swing.JSpinner spinnerCavernsMinLevel; private javax.swing.JSpinner spinnerCeilingHeight; private javax.swing.JSpinner spinnerChasmsMaxLevel; private javax.swing.JSpinner spinnerChasmsMinLevel; private javax.swing.JSpinner spinnerCoalChance; private javax.swing.JSpinner spinnerCoalMaxLevel; private javax.swing.JSpinner spinnerCoalMinLevel; private javax.swing.JSpinner spinnerDiamondChance; private javax.swing.JSpinner spinnerDiamondMaxLevel; private javax.swing.JSpinner spinnerDiamondMinLevel; private javax.swing.JSpinner spinnerDirtChance; private javax.swing.JSpinner spinnerDirtMaxLevel; private javax.swing.JSpinner spinnerDirtMinLevel; private javax.swing.JSpinner spinnerEmeraldChance; private javax.swing.JSpinner spinnerEmeraldMaxLevel; private javax.swing.JSpinner spinnerEmeraldMinLevel; private javax.swing.JSpinner spinnerGoldChance; private javax.swing.JSpinner spinnerGoldMaxLevel; private javax.swing.JSpinner spinnerGoldMinLevel; private javax.swing.JSpinner spinnerGravelChance; private javax.swing.JSpinner spinnerGravelMaxLevel; private javax.swing.JSpinner spinnerGravelMinLevel; private javax.swing.JSpinner spinnerIronChance; private javax.swing.JSpinner spinnerIronMaxLevel; private javax.swing.JSpinner spinnerIronMinLevel; private javax.swing.JSpinner spinnerLapisChance; private javax.swing.JSpinner spinnerLapisMaxLevel; private javax.swing.JSpinner spinnerLapisMinLevel; private javax.swing.JSpinner spinnerLavaChance; private javax.swing.JSpinner spinnerLavaMaxLevel; private javax.swing.JSpinner spinnerLavaMinLevel; private javax.swing.JSpinner spinnerMaxSurfaceDepth; private javax.swing.JSpinner spinnerMcBorderCentreX; private javax.swing.JSpinner spinnerMcBorderCentreY; private javax.swing.JSpinner spinnerMcBorderSize; private javax.swing.JSpinner spinnerMinSurfaceDepth; private javax.swing.JSpinner spinnerMinecraftSeed; private javax.swing.JSpinner spinnerQuartzChance; private javax.swing.JSpinner spinnerQuartzMaxLevel; private javax.swing.JSpinner spinnerQuartzMinLevel; private javax.swing.JSpinner spinnerRedstoneChance; private javax.swing.JSpinner spinnerRedstoneMaxLevel; private javax.swing.JSpinner spinnerRedstoneMinLevel; private javax.swing.JSpinner spinnerWaterChance; private javax.swing.JSpinner spinnerWaterMaxLevel; private javax.swing.JSpinner spinnerWaterMinLevel; private javax.swing.JTable tableCustomLayers; private org.pepsoft.worldpainter.themes.impl.simple.SimpleThemeEditor themeEditor; // End of variables declaration//GEN-END:variables private Dimension dimension; private CustomLayersTableModel customLayersTableModel; private Mode mode; private List<BorderListener> borderListeners = new ArrayList<>(); private static final long serialVersionUID = 1L; public enum Mode {EXPORT, DEFAULT_SETTINGS, EDITOR} public interface BorderListener { void borderChanged(Dimension.Border newBorder); } }