
org.pepsoft.worldpainter.DimensionPropertiesEditor Maven / Gradle / Ivy
/*
* 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.*;
import org.pepsoft.worldpainter.Dimension.LayerAnchor;
/**
*
* @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);
comboBoxSurfaceLayerAnchor.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.setTopLayerAnchor(Dimension.LayerAnchor.values()[comboBoxSurfaceLayerAnchor.getSelectedIndex()]);
dimension.setSubsurfaceMaterial((Terrain) comboBoxSubsurfaceMaterial.getSelectedItem());
dimension.setSubsurfaceLayerAnchor(subsurfaceLayerAnchor);
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 deciduousSettings = (TreeLayerSettings) 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 pineSettings = (TreeLayerSettings) 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 jungleSettings = (TreeLayerSettings) 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 swampLandSettings = (TreeLayerSettings) 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.changed();
}
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());
comboBoxSurfaceLayerAnchor.setSelectedIndex(dimension.getTopLayerAnchor().ordinal());
Terrain subsurfaceTerrain = dimension.getSubsurfaceMaterial();
subsurfaceLayerAnchor = dimension.getSubsurfaceLayerAnchor();
if ((subsurfaceTerrain != null) && subsurfaceTerrain.isCustom()) {
MixedMaterial material = Terrain.getCustomMaterial(subsurfaceTerrain.getCustomTerrainIndex());
if (material.getMode() == MixedMaterial.Mode.LAYERED) {
comboBoxUndergroundLayerAnchor.setSelectedIndex(subsurfaceLayerAnchor.ordinal());
} else {
comboBoxUndergroundLayerAnchor.setSelectedItem(null);
}
} else {
comboBoxUndergroundLayerAnchor.setSelectedItem(null);
}
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 materialList = new ArrayList<>(Arrays.asList(Terrain.VALUES));
for (Iterator 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 deciduousSettings = (TreeLayerSettings) 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 pineSettings = (TreeLayerSettings) 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 jungleSettings = (TreeLayerSettings) 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 swampLandSettings = (TreeLayerSettings) 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 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)));
if (! enabled) {
comboBoxUndergroundLayerAnchor.setEnabled(false);
} else {
Terrain subsurfaceTerrain = (Terrain) comboBoxSubsurfaceMaterial.getSelectedItem();
if ((subsurfaceTerrain != null) && subsurfaceTerrain.isCustom()) {
MixedMaterial material = Terrain.getCustomMaterial(subsurfaceTerrain.getCustomTerrainIndex());
comboBoxUndergroundLayerAnchor.setEnabled(material.getMode() == MixedMaterial.Mode.LAYERED);
} else {
comboBoxUndergroundLayerAnchor.setEnabled(false);
}
}
}
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")
// //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();
comboBoxSurfaceLayerAnchor = new javax.swing.JComboBox<>();
jLabel83 = new javax.swing.JLabel();
jLabel84 = new javax.swing.JLabel();
comboBoxUndergroundLayerAnchor = new javax.swing.JComboBox<>();
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(-9223372036854775808L, null, null, 1L));
spinnerMinecraftSeed.setEditor(new javax.swing.JSpinner.NumberEditor(spinnerMinecraftSeed, "0"));
jLabel8.setLabelFor(spinnerBorderSize);
jLabel8.setText("Border size:");
spinnerBorderSize.setModel(new javax.swing.SpinnerNumberModel(256, 128, null, 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("Generate a bottomless map:\n- No bedrock at the bottom of the map\n
- Caverns and chasms are open to the void");
jLabel67.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/pepsoft/worldpainter/icons/information.png"))); // NOI18N
jLabel67.setText(" ");
jLabel67.setToolTipText("Generate a bottomless map:\n
- No bedrock at the bottom of the map\n
- Caverns and chasms are open to the void");
checkBoxCoverSteepTerrain.setText("keep steep terrain covered");
checkBoxCoverSteepTerrain.setToolTipText("Enable this to extend the top layer
\ndownwards on steep terrain such as cliffs
\nso that the underground material is never exposed.");
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);
}
});
comboBoxSurfaceLayerAnchor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Bedrock", "Terrain" }));
jLabel83.setText("Layered materials relative to:");
jLabel84.setText("Layered material relative to:");
comboBoxUndergroundLayerAnchor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Bedrock", "Terrain" }));
comboBoxUndergroundLayerAnchor.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboBoxUndergroundLayerAnchorActionPerformed(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(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)
.addGap(18, 18, 18)
.addComponent(jLabel83)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboBoxSurfaceLayerAnchor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.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)
.addGap(18, 18, 18)
.addComponent(jLabel84)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboBoxUndergroundLayerAnchor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.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(javax.swing.GroupLayout.DEFAULT_SIZE, 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)
.addComponent(comboBoxSurfaceLayerAnchor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel83))
.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)
.addComponent(jLabel84)
.addComponent(comboBoxUndergroundLayerAnchor, 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, false)
.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))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
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("This will mark the entire terrain as unpopulated, causing Minecraft to generate trees,
\nwater and lava pools, pockets of dirt, gravel, coal, ore, etc. (but not caverns) as the
\nchunks are loaded. This will slow down the initial loading of each chunk, and you have
\nno control over where trees, snow, etc. appear.");
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("On this page you can configure the export order of your custom layers,
as well as prevent certain layers from being exported.");
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)
.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)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(buttonCustomLayerUp)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonCustomLayerDown)
.addGap(0, 0, 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)
);
}//
//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
Terrain terrain = (Terrain) comboBoxSubsurfaceMaterial.getSelectedItem();
if ((terrain != null) && terrain.isCustom()) {
MixedMaterial material = Terrain.getCustomMaterial(terrain.getCustomTerrainIndex());
if (material.getMode() == MixedMaterial.Mode.LAYERED) {
comboBoxUndergroundLayerAnchor.setSelectedIndex(subsurfaceLayerAnchor.ordinal());
} else {
comboBoxUndergroundLayerAnchor.setSelectedItem(null);
}
} else {
comboBoxUndergroundLayerAnchor.setSelectedItem(null);
}
setControlStates();
}//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
private void comboBoxUndergroundLayerAnchorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxUndergroundLayerAnchorActionPerformed
int selectedIndex = comboBoxUndergroundLayerAnchor.getSelectedIndex();
if (selectedIndex >= 0) {
subsurfaceLayerAnchor = LayerAnchor.values()[selectedIndex];
}
}//GEN-LAST:event_comboBoxUndergroundLayerAnchorActionPerformed
// 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.JComboBox comboBoxSurfaceLayerAnchor;
private javax.swing.JComboBox comboBoxUndergroundLayerAnchor;
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 jLabel83;
private javax.swing.JLabel jLabel84;
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 borderListeners = new ArrayList<>();
private Dimension.LayerAnchor subsurfaceLayerAnchor;
private static final long serialVersionUID = 1L;
public enum Mode {EXPORT, DEFAULT_SETTINGS, EDITOR}
public interface BorderListener {
void borderChanged(Dimension.Border newBorder);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy