Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cleanup WorldEdit-CLI data version systems #2347

Merged
merged 7 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions verification/src/changes/accepted-cli-public-api-changes.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,142 @@
"METHOD_REMOVED"
]
}
],
"Removed overridden method": [
me4502 marked this conversation as resolved.
Show resolved Hide resolved
{
"type": "com.sk89q.worldedit.cli.CLIConfiguration",
"member": "Method com.sk89q.worldedit.cli.CLIConfiguration.loadExtra()",
"changes": [
"METHOD_REMOVED"
]
}
],
"Data File changes for downloadability": [
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries",
"member": "Method com.sk89q.worldedit.cli.data.FileRegistries.getDataFile()",
"changes": [
"METHOD_RETURN_TYPE_CHANGED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest",
"member": "Class com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest",
"changes": [
"CLASS_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest",
"member": "Field defaultstate",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest",
"member": "Field properties",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest",
"member": "Constructor com.sk89q.worldedit.cli.data.FileRegistries$BlockManifest()",
"changes": [
"CONSTRUCTOR_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty",
"member": "Class com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty",
"changes": [
"CLASS_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty",
"member": "Field values",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty",
"member": "Field type",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty",
"member": "Constructor com.sk89q.worldedit.cli.data.FileRegistries$BlockProperty()",
"changes": [
"CONSTRUCTOR_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Class com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"changes": [
"CLASS_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field itemtags",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field entitytags",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field entities",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field biomes",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field blocks",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field blocktags",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Field items",
"changes": [
"FIELD_REMOVED"
]
},
{
"type": "com.sk89q.worldedit.cli.data.FileRegistries$DataFile",
"member": "Constructor com.sk89q.worldedit.cli.data.FileRegistries$DataFile()",
"changes": [
"CONSTRUCTOR_REMOVED"
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class CLIBlockCategoryRegistry implements BlockCategoryRegistry {

@Override
public Set<BlockType> getCategorisedByName(String category) {
return CLIWorldEdit.inst.getFileRegistries().getDataFile().blocktags.getOrDefault(category, Collections.emptyList()).stream()
return CLIWorldEdit.inst.getFileRegistries().getDataFile().blocktags().getOrDefault(category, Collections.emptyList()).stream()
.map(BlockType.REGISTRY::get)
.collect(Collectors.toSet());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.sk89q.worldedit.cli.data.FileRegistries;
import com.sk89q.worldedit.cli.data.DataFile;
import com.sk89q.worldedit.registry.state.BooleanProperty;
import com.sk89q.worldedit.registry.state.DirectionalProperty;
import com.sk89q.worldedit.registry.state.EnumProperty;
Expand Down Expand Up @@ -51,10 +51,10 @@ private Property<?> createProperty(String type, String key, List<String> values)
@Nullable
@Override
public Map<String, ? extends Property<?>> getProperties(BlockType blockType) {
Map<String, FileRegistries.BlockProperty> properties =
CLIWorldEdit.inst.getFileRegistries().getDataFile().blocks.get(blockType.id()).properties;
Maps.EntryTransformer<String, FileRegistries.BlockProperty, Property<?>> entryTransform =
(key, value) -> createProperty(value.type, key, value.values);
Map<String, DataFile.BlockProperty> properties =
CLIWorldEdit.inst.getFileRegistries().getDataFile().blocks().get(blockType.id()).properties();
Maps.EntryTransformer<String, DataFile.BlockProperty, Property<?>> entryTransform =
(key, value) -> createProperty(value.type(), key, value.values());
return ImmutableMap.copyOf(Maps.transformEntries(properties, entryTransform));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,15 @@ public class CLICommandSender implements Actor {
*/
private static final UUID DEFAULT_ID = UUID.fromString("a233eb4b-4cab-42cd-9fd9-7e7b9a3f74be");

private final CLIWorldEdit app;
private final Logger sender;

public CLICommandSender(CLIWorldEdit app, Logger sender) {
checkNotNull(app);
public CLICommandSender(CLIWorldEdit cliWorldEdit, Logger sender) {
this(sender);
}

public CLICommandSender(Logger sender) {
checkNotNull(sender);

this.app = app;
this.sender = sender;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ public CLIConfiguration(CLIWorldEdit app) {
super(app.getWorkingDir().resolve("worldedit.properties"));
}

@Override
protected void loadExtra() {
}

@Override
public Path getWorkingDirectoryPath() {
return CLIWorldEdit.inst.getWorkingDir();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class CLIItemCategoryRegistry implements ItemCategoryRegistry {

@Override
public Set<ItemType> getCategorisedByName(String category) {
return CLIWorldEdit.inst.getFileRegistries().getDataFile().itemtags.get(category).stream()
return CLIWorldEdit.inst.getFileRegistries().getDataFile().itemtags().get(category).stream()
.map(ItemType.REGISTRY::get)
.collect(Collectors.toSet());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.extension.platform.Preference;
import com.sk89q.worldedit.util.SideEffect;
import com.sk89q.worldedit.world.DataFixer;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.entity.EntityTypes;
import com.sk89q.worldedit.world.registry.Registries;
Expand Down Expand Up @@ -67,11 +66,6 @@ public void setDataVersion(int dataVersion) {
this.dataVersion = dataVersion;
}

@Override
public DataFixer getDataFixer() {
return null;
}

@Override
public boolean isValidMobType(String type) {
return EntityTypes.get(type) != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import com.google.common.collect.ImmutableList;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.cli.data.DataFile;
import com.sk89q.worldedit.cli.data.FileRegistries;
import com.sk89q.worldedit.cli.schematic.ClipboardWorld;
import com.sk89q.worldedit.event.platform.CommandEvent;
Expand Down Expand Up @@ -100,7 +101,6 @@ private void setupPlatform() {
WorldEdit.getInstance().getEventBus().post(new PlatformsRegisteredEvent());

this.fileRegistries = new FileRegistries(this);
this.fileRegistries.loadDataFiles();
}

private void registerCommands() {
Expand All @@ -116,8 +116,11 @@ private void registerCommands() {
}

public void setupRegistries() {
this.fileRegistries.loadDataFiles();

// Blocks
for (Map.Entry<String, FileRegistries.BlockManifest> manifestEntry : fileRegistries.getDataFile().blocks.entrySet()) {
BlockType.REGISTRY.clear();
for (Map.Entry<String, DataFile.BlockManifest> manifestEntry : fileRegistries.getDataFile().blocks().entrySet()) {
if (BlockType.REGISTRY.get(manifestEntry.getKey()) == null) {
BlockType.REGISTRY.register(manifestEntry.getKey(), new BlockType(manifestEntry.getKey(), input -> {
ParserContext context = new ParserContext();
Expand All @@ -126,7 +129,7 @@ public void setupRegistries() {
context.setRestricted(false);
try {
FuzzyBlockState state = (FuzzyBlockState) WorldEdit.getInstance().getBlockFactory().parseFromInput(
manifestEntry.getValue().defaultstate,
manifestEntry.getValue().defaultstate(),
context
).toImmutableState();
BlockState defaultState = input.getBlockType().getAllStates().get(0);
Expand All @@ -144,30 +147,35 @@ public void setupRegistries() {
}
}
// Items
for (String name : fileRegistries.getDataFile().items) {
ItemType.REGISTRY.clear();
for (String name : fileRegistries.getDataFile().items()) {
if (ItemType.REGISTRY.get(name) == null) {
ItemType.REGISTRY.register(name, new ItemType(name));
}
}
// Entities
for (String name : fileRegistries.getDataFile().entities) {
EntityType.REGISTRY.clear();
for (String name : fileRegistries.getDataFile().entities()) {
if (EntityType.REGISTRY.get(name) == null) {
EntityType.REGISTRY.register(name, new EntityType(name));
}
}
// Biomes
for (String name : fileRegistries.getDataFile().biomes) {
BiomeType.REGISTRY.clear();
for (String name : fileRegistries.getDataFile().biomes()) {
if (BiomeType.REGISTRY.get(name) == null) {
BiomeType.REGISTRY.register(name, new BiomeType(name));
}
}
// Tags
for (String name : fileRegistries.getDataFile().blocktags.keySet()) {
BlockCategory.REGISTRY.clear();
for (String name : fileRegistries.getDataFile().blocktags().keySet()) {
if (BlockCategory.REGISTRY.get(name) == null) {
BlockCategory.REGISTRY.register(name, new BlockCategory(name));
}
}
for (String name : fileRegistries.getDataFile().itemtags.keySet()) {
ItemCategory.REGISTRY.clear();
for (String name : fileRegistries.getDataFile().itemtags().keySet()) {
if (ItemCategory.REGISTRY.get(name) == null) {
ItemCategory.REGISTRY.register(name, new ItemCategory(name));
}
Expand All @@ -185,7 +193,7 @@ public void onInitialized() {
}
}

this.commandSender = new CLICommandSender(this, LOGGER);
this.commandSender = new CLICommandSender(LOGGER);
this.platform = new CLIPlatform(this);
LOGGER.info("WorldEdit CLI (version " + getInternalVersion() + ") is loaded");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* WorldEdit, a Minecraft world manipulation toolkit
* Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package com.sk89q.worldedit.cli.data;

import java.util.List;
import java.util.Map;

public record DataFile(Map<String, List<String>> itemtags,
Map<String, List<String>> blocktags,
Map<String, List<String>> entitytags,
List<String> items,
List<String> entities,
List<String> biomes,
Map<String, BlockManifest> blocks) {

public record BlockManifest(String defaultstate, Map<String, BlockProperty> properties) {
}

public record BlockProperty(List<String> values, String type) {
}
}
me4502 marked this conversation as resolved.
Show resolved Hide resolved
Loading