mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-04-02 06:33:14 +00:00
Almost finished the state system. Just got to have it actually load in the values.
This commit is contained in:
parent
3e1d438565
commit
4938f419ad
worldedit-bukkit/src/main
java/com/sk89q/worldedit/bukkit
resources/com/sk89q/worldedit/bukkit/adapter/impl
CraftBukkit_v1_6_R3.classCraftBukkit_v1_7_R2.classCraftBukkit_v1_7_R3.classCraftBukkit_v1_7_R4.classSpigot_v1_10_R1.classSpigot_v1_11_R1.classSpigot_v1_12_R1.classSpigot_v1_12_R2.classSpigot_v1_13_R1.classSpigot_v1_8_R1.classSpigot_v1_8_R2.classSpigot_v1_8_R3.classSpigot_v1_9_R1.classSpigot_v1_9_R2.class
worldedit-core/src/main/java/com/sk89q/worldedit
extension/factory
extent/transform
registry/state
world/registry
@ -20,12 +20,15 @@
|
|||||||
package com.sk89q.worldedit.bukkit;
|
package com.sk89q.worldedit.bukkit;
|
||||||
|
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
import com.sk89q.worldedit.world.registry.BundledBlockRegistry;
|
import com.sk89q.worldedit.world.registry.BundledBlockRegistry;
|
||||||
import com.sk89q.worldedit.world.registry.PassthroughBlockMaterial;
|
import com.sk89q.worldedit.world.registry.PassthroughBlockMaterial;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -41,6 +44,23 @@ public class BukkitBlockRegistry extends BundledBlockRegistry {
|
|||||||
material -> new BukkitBlockMaterial(BukkitBlockRegistry.super.getMaterial(id), material));
|
material -> new BukkitBlockMaterial(BukkitBlockRegistry.super.getMaterial(id), material));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Object> getPropertyValues(BlockType blockType, Property<?> property) {
|
||||||
|
if (WorldEditPlugin.getInstance().getBukkitImplAdapter() != null) {
|
||||||
|
return WorldEditPlugin.getInstance().getBukkitImplAdapter().getPropertyValues(blockType, property);
|
||||||
|
}
|
||||||
|
return super.getPropertyValues(blockType, property);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Map<String, ? extends Property> getProperties(BlockType blockType) {
|
||||||
|
if (WorldEditPlugin.getInstance().getBukkitImplAdapter() != null) {
|
||||||
|
return WorldEditPlugin.getInstance().getBukkitImplAdapter().getProperties(blockType);
|
||||||
|
}
|
||||||
|
return super.getProperties(blockType);
|
||||||
|
}
|
||||||
|
|
||||||
public static class BukkitBlockMaterial extends PassthroughBlockMaterial {
|
public static class BukkitBlockMaterial extends PassthroughBlockMaterial {
|
||||||
|
|
||||||
private final Material material;
|
private final Material material;
|
||||||
|
@ -20,12 +20,17 @@
|
|||||||
package com.sk89q.worldedit.bukkit.adapter;
|
package com.sk89q.worldedit.bukkit.adapter;
|
||||||
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -91,4 +96,19 @@ public interface BukkitImplAdapter {
|
|||||||
Entity createEntity(Location location, BaseEntity state);
|
Entity createEntity(Location location, BaseEntity state);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of values for a property.
|
||||||
|
*
|
||||||
|
* @param property The property
|
||||||
|
* @return The list of values
|
||||||
|
*/
|
||||||
|
List<Object> getPropertyValues(BlockType blockType, Property<?> property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a map of string -> properties
|
||||||
|
*
|
||||||
|
* @param blockType The block type
|
||||||
|
* @return The properties map
|
||||||
|
*/
|
||||||
|
Map<String, ? extends Property> getProperties(BlockType blockType);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_10_R1.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_10_R1.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_11_R1.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_11_R1.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_12_R1.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_12_R1.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_12_R2.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_12_R2.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_13_R1.class
Normal file
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_13_R1.class
Normal file
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R1.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R1.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R2.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R2.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R3.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_8_R3.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_9_R1.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_9_R1.class
Binary file not shown.
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_9_R2.class
BIN
worldedit-bukkit/src/main/resources/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_9_R2.class
Binary file not shown.
@ -29,10 +29,6 @@ import com.sk89q.worldedit.blocks.MobSpawnerBlock;
|
|||||||
import com.sk89q.worldedit.blocks.SignBlock;
|
import com.sk89q.worldedit.blocks.SignBlock;
|
||||||
import com.sk89q.worldedit.blocks.SkullBlock;
|
import com.sk89q.worldedit.blocks.SkullBlock;
|
||||||
import com.sk89q.worldedit.blocks.metadata.MobType;
|
import com.sk89q.worldedit.blocks.metadata.MobType;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.extension.input.DisallowedUsageException;
|
import com.sk89q.worldedit.extension.input.DisallowedUsageException;
|
||||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
@ -41,11 +37,15 @@ import com.sk89q.worldedit.extension.input.ParserContext;
|
|||||||
import com.sk89q.worldedit.extension.platform.Actor;
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
import com.sk89q.worldedit.extension.platform.Capability;
|
import com.sk89q.worldedit.extension.platform.Capability;
|
||||||
import com.sk89q.worldedit.internal.registry.InputParser;
|
import com.sk89q.worldedit.internal.registry.InputParser;
|
||||||
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
import com.sk89q.worldedit.util.HandSide;
|
import com.sk89q.worldedit.util.HandSide;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.registry.BundledBlockData;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -162,7 +162,8 @@ class DefaultBlockParser extends InputParser<BlockStateHolder> {
|
|||||||
throw new NoMatchException("Bad state format in " + parseableData);
|
throw new NoMatchException("Bad state format in " + parseableData);
|
||||||
}
|
}
|
||||||
|
|
||||||
Property propertyKey = BundledBlockData.getInstance().findById(state.getBlockType().getId()).states.get(parts[0]);
|
Property propertyKey = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS)
|
||||||
|
.getRegistries().getBlockRegistry().getProperties(state.getBlockType()).get(parts[0]);
|
||||||
if (propertyKey == null) {
|
if (propertyKey == null) {
|
||||||
throw new NoMatchException("Unknown state " + parts[0] + " for block " + state.getBlockType().getName());
|
throw new NoMatchException("Unknown state " + parts[0] + " for block " + state.getBlockType().getName());
|
||||||
}
|
}
|
||||||
@ -194,7 +195,7 @@ class DefaultBlockParser extends InputParser<BlockStateHolder> {
|
|||||||
}
|
}
|
||||||
String typeString = matcher.group(1);
|
String typeString = matcher.group(1);
|
||||||
String[] stateProperties = EMPTY_STRING_ARRAY;
|
String[] stateProperties = EMPTY_STRING_ARRAY;
|
||||||
if (matcher.groupCount() == 3) {
|
if (matcher.groupCount() >= 2 && matcher.group(2) != null) {
|
||||||
stateProperties = matcher.group(2).split(",");
|
stateProperties = matcher.group(2).split(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ import com.sk89q.worldedit.extent.Extent;
|
|||||||
import com.sk89q.worldedit.math.transform.Transform;
|
import com.sk89q.worldedit.math.transform.Transform;
|
||||||
import com.sk89q.worldedit.registry.state.DirectionalProperty;
|
import com.sk89q.worldedit.registry.state.DirectionalProperty;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
import com.sk89q.worldedit.registry.state.value.DirectionalStateValue;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -129,7 +128,7 @@ public class BlockTransformExtent extends AbstractDelegateExtent {
|
|||||||
checkNotNull(transform);
|
checkNotNull(transform);
|
||||||
|
|
||||||
Map<String, ? extends Property> states = WorldEdit.getInstance().getPlatformManager()
|
Map<String, ? extends Property> states = WorldEdit.getInstance().getPlatformManager()
|
||||||
.queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getStates(block);
|
.queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getProperties(block.getBlockType());
|
||||||
|
|
||||||
if (states == null) {
|
if (states == null) {
|
||||||
return changedBlock;
|
return changedBlock;
|
||||||
@ -137,9 +136,9 @@ public class BlockTransformExtent extends AbstractDelegateExtent {
|
|||||||
|
|
||||||
for (Property property : states.values()) {
|
for (Property property : states.values()) {
|
||||||
if (property instanceof DirectionalProperty) {
|
if (property instanceof DirectionalProperty) {
|
||||||
DirectionalStateValue value = (DirectionalStateValue) block.getState(property);
|
Vector value = (Vector) block.getState(property);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
DirectionalStateValue newValue = getNewStateValue((DirectionalProperty) property, transform, value.getDirection());
|
Vector newValue = getNewStateValue((DirectionalProperty) property, transform, value);
|
||||||
if (newValue != null) {
|
if (newValue != null) {
|
||||||
changedBlock.with(property, newValue);
|
changedBlock.with(property, newValue);
|
||||||
}
|
}
|
||||||
@ -159,22 +158,20 @@ public class BlockTransformExtent extends AbstractDelegateExtent {
|
|||||||
* @return a new state or null if none could be found
|
* @return a new state or null if none could be found
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
private static DirectionalStateValue getNewStateValue(DirectionalProperty state, Transform transform, Vector oldDirection) {
|
private static Vector getNewStateValue(DirectionalProperty state, Transform transform, Vector oldDirection) {
|
||||||
Vector newDirection = transform.apply(oldDirection).subtract(transform.apply(Vector.ZERO)).normalize();
|
Vector newDirection = transform.apply(oldDirection).subtract(transform.apply(Vector.ZERO)).normalize();
|
||||||
DirectionalStateValue newValue = null;
|
Vector newValue = null;
|
||||||
double closest = -2;
|
double closest = -2;
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
|
|
||||||
for (DirectionalStateValue v : state.getValues()) {
|
for (Vector v : state.getValues()) {
|
||||||
if (v.getDirection() != null) {
|
double dot = v.normalize().dot(newDirection);
|
||||||
double dot = v.getDirection().normalize().dot(newDirection);
|
|
||||||
if (dot >= closest) {
|
if (dot >= closest) {
|
||||||
closest = dot;
|
closest = dot;
|
||||||
newValue = v;
|
newValue = v;
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
return newValue;
|
return newValue;
|
||||||
|
@ -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 Lesser 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 Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.worldedit.registry.state;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class BooleanProperty extends AbstractProperty<Boolean> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Boolean> getValues() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Boolean getValueFor(String string) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -19,21 +19,21 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.registry.state;
|
package com.sk89q.worldedit.registry.state;
|
||||||
|
|
||||||
import com.sk89q.worldedit.registry.state.value.DirectionalStateValue;
|
import com.sk89q.worldedit.Vector;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class DirectionalProperty extends AbstractProperty<DirectionalStateValue> {
|
public class DirectionalProperty extends AbstractProperty<Vector> {
|
||||||
@Override
|
@Override
|
||||||
public List<DirectionalStateValue> getValues() {
|
public List<Vector> getValues() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public DirectionalStateValue getValueFor(final String string) {
|
public Vector getValueFor(final String string) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,22 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.sk89q.worldedit.registry.state.value;
|
package com.sk89q.worldedit.registry.state;
|
||||||
|
|
||||||
import com.sk89q.worldedit.Vector;
|
import java.util.List;
|
||||||
|
|
||||||
public class DirectionalStateValue {
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public Vector getDirection() {
|
public class EnumProperty extends AbstractProperty<String> {
|
||||||
return new Vector(); // TODO
|
|
||||||
|
@Override
|
||||||
|
public List<String> getValues() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getValueFor(String string) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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 Lesser 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 Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.worldedit.registry.state;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class IntegerProperty extends AbstractProperty<Integer> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Integer> getValues() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Integer getValueFor(String string) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -20,10 +20,10 @@
|
|||||||
package com.sk89q.worldedit.world.registry;
|
package com.sk89q.worldedit.world.registry;
|
||||||
|
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -33,15 +33,6 @@ import javax.annotation.Nullable;
|
|||||||
*/
|
*/
|
||||||
public interface BlockRegistry {
|
public interface BlockRegistry {
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new block using its ID.
|
|
||||||
*
|
|
||||||
* @param id the id
|
|
||||||
* @return the block, which may be null if no block exists
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
BlockState createFromId(String id);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the material for the given block.
|
* Get the material for the given block.
|
||||||
*
|
*
|
||||||
@ -51,13 +42,21 @@ public interface BlockRegistry {
|
|||||||
@Nullable
|
@Nullable
|
||||||
BlockMaterial getMaterial(String id);
|
BlockMaterial getMaterial(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an unmodifiable list of values for this property.
|
||||||
|
*
|
||||||
|
* @param blockType The block
|
||||||
|
* @param property the property
|
||||||
|
* @return the list of values
|
||||||
|
*/
|
||||||
|
List<Object> getPropertyValues(BlockType blockType, Property<?> property);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an unmodifiable map of states for this block.
|
* Get an unmodifiable map of states for this block.
|
||||||
*
|
*
|
||||||
* @param block the block
|
* @param blockType the block
|
||||||
* @return a map of states where the key is the state's ID
|
* @return a map of states where the key is the state's ID
|
||||||
*/
|
*/
|
||||||
@Nullable
|
Map<String, ? extends Property> getProperties(BlockType blockType);
|
||||||
Map<String, ? extends Property> getStates(BlockStateHolder block);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,8 @@ import com.google.gson.GsonBuilder;
|
|||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.Vector;
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
|
||||||
import com.sk89q.worldedit.util.gson.VectorAdapter;
|
import com.sk89q.worldedit.util.gson.VectorAdapter;
|
||||||
import com.sk89q.worldedit.registry.state.AbstractProperty;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
@ -39,6 +36,8 @@ import java.util.Map;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides block data based on the built-in block database that is bundled
|
* Provides block data based on the built-in block database that is bundled
|
||||||
* with WorldEdit.
|
* with WorldEdit.
|
||||||
@ -86,7 +85,6 @@ public class BundledBlockData {
|
|||||||
|
|
||||||
for (BlockEntry entry : entries) {
|
for (BlockEntry entry : entries) {
|
||||||
idMap.put(entry.id, entry);
|
idMap.put(entry.id, entry);
|
||||||
entry.postDeserialization();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,22 +119,6 @@ public class BundledBlockData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the states for the given block.
|
|
||||||
*
|
|
||||||
* @param id the string ID
|
|
||||||
* @return the block's states, or null if no information is available
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
public Map<String, ? extends Property> getStatesById(String id) {
|
|
||||||
BlockEntry entry = findById(id);
|
|
||||||
if (entry != null) {
|
|
||||||
return entry.states;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a singleton instance of this object.
|
* Get a singleton instance of this object.
|
||||||
*
|
*
|
||||||
@ -151,14 +133,7 @@ public class BundledBlockData {
|
|||||||
private String unlocalizedName;
|
private String unlocalizedName;
|
||||||
public String localizedName;
|
public String localizedName;
|
||||||
private List<String> aliases;
|
private List<String> aliases;
|
||||||
public Map<String, AbstractProperty> states = new HashMap<>();
|
|
||||||
private SimpleBlockMaterial material = new SimpleBlockMaterial();
|
private SimpleBlockMaterial material = new SimpleBlockMaterial();
|
||||||
|
|
||||||
void postDeserialization() {
|
|
||||||
for (Map.Entry<String, AbstractProperty> state : states.entrySet()) {
|
|
||||||
state.getValue().setName(state.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,10 @@ package com.sk89q.worldedit.world.registry;
|
|||||||
|
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -35,22 +35,21 @@ import javax.annotation.Nullable;
|
|||||||
*/
|
*/
|
||||||
public class BundledBlockRegistry implements BlockRegistry {
|
public class BundledBlockRegistry implements BlockRegistry {
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public BlockState createFromId(String id) {
|
|
||||||
return BlockTypes.get(id).getDefaultState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public BlockMaterial getMaterial(String id) {
|
public BlockMaterial getMaterial(String id) {
|
||||||
return new PassthroughBlockMaterial(BundledBlockData.getInstance().getMaterialById(id));
|
return new PassthroughBlockMaterial(BundledBlockData.getInstance().getMaterialById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Object> getPropertyValues(BlockType blockType, Property<?> property) {
|
||||||
|
return Collections.emptyList(); // Oof
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public Map<String, ? extends Property> getStates(BlockStateHolder block) {
|
public Map<String, ? extends Property> getProperties(BlockType blockType) {
|
||||||
return BundledBlockData.getInstance().getStatesById(block.getBlockType().getId());
|
return Collections.emptyMap(); // Oof
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user