Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-05 02:50:05 +01:00
Commit
74fade22a6
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,7 +10,6 @@ eclipse
|
||||
bin
|
||||
build
|
||||
target
|
||||
gradle
|
||||
.gradle
|
||||
forge-download
|
||||
out
|
||||
|
16
HEADER.txt
Normale Datei
16
HEADER.txt
Normale Datei
@ -0,0 +1,16 @@
|
||||
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/>.
|
36
build.gradle
36
build.gradle
@ -1,5 +1,3 @@
|
||||
print new File('splash.txt').text
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
@ -16,15 +14,21 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
|
||||
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.3.0'
|
||||
classpath 'org.ajoberstar:gradle-git:1.5.1'
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4'
|
||||
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.7.5'
|
||||
classpath 'org.ajoberstar:gradle-git:1.7.2'
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'net.minecrell.licenser' version '0.4.1' apply false
|
||||
}
|
||||
|
||||
apply plugin: 'java'
|
||||
clean { delete "target" }
|
||||
|
||||
print new File('splash.txt').text
|
||||
|
||||
group = 'com.boydti.fawe'
|
||||
def revision = ""
|
||||
def buildNumber = ""
|
||||
@ -57,9 +61,8 @@ subprojects {
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
// Enable this requires putting license header files in many, many FAWE files
|
||||
//apply plugin: 'net.minecrell.licenser'
|
||||
|
||||
ext.internalVersion = version
|
||||
|
||||
@ -70,10 +73,11 @@ subprojects {
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven { url "http://ci.athion.net/job/FAWE-WorldGuard-1.13/ws/mvn/" }
|
||||
maven { url "http://repo.bukkit.org/content/groups/public" }
|
||||
maven { url "http://maven.sk89q.com/repo/" }
|
||||
maven { url "http://repo.maven.apache.org/maven2" }
|
||||
// Fawe
|
||||
maven {url "http://ci.athion.net/job/FAWE-WorldGuard-1.13/ws/mvn/"}
|
||||
maven {url "https://mvnrepository.com/artifact/"}
|
||||
maven {url "http://repo.dmulloy2.net/content/groups/public/"}
|
||||
maven {url "https://repo.destroystokyo.com/repository/maven-public//"}
|
||||
@ -88,6 +92,13 @@ subprojects {
|
||||
maven {url "http://ci.emc.gs/nexus/content/groups/aikar/" }
|
||||
}
|
||||
|
||||
if (JavaVersion.current().isJava8Compatible()) {
|
||||
// Java 8 turns on doclint which we fail
|
||||
tasks.withType(Javadoc) {
|
||||
options.addStringOption('Xdoclint:none', '-quiet')
|
||||
}
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
@ -95,6 +106,7 @@ subprojects {
|
||||
|
||||
artifacts {
|
||||
archives jar
|
||||
archives javadocJar
|
||||
}
|
||||
|
||||
if (!(name.equals('worldedit-forge') || name.equals('worldedit-sponge'))) {
|
||||
@ -122,4 +134,10 @@ subprojects {
|
||||
exclude '.cache'
|
||||
exclude 'LICENSE*'
|
||||
}
|
||||
|
||||
// Enable this requires putting license header files in many, many FAWE files
|
||||
//license {
|
||||
// header = rootProject.file("HEADER.txt")
|
||||
// include '**/*.java'
|
||||
//}
|
||||
}
|
||||
|
@ -53,11 +53,4 @@
|
||||
<module name="ParameterName"/>
|
||||
<!-- <module name="TypeName"/> Unlikely that we would miss this in a PR -->
|
||||
</module>
|
||||
|
||||
<!-- Require the header, something that many people forget and we hate to fix -->
|
||||
<!-- You should configure the header in your IDE -->
|
||||
<module name="Header">
|
||||
<property name="headerFile" value="${basedir}/config/checkstyle/header.txt"/>
|
||||
<property name="fileExtensions" value="java"/>
|
||||
</module>
|
||||
</module>
|
||||
|
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* 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/>.
|
||||
*/
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binäre Datei nicht angezeigt.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,5 @@
|
||||
#Thu Jul 26 14:29:48 AEST 2018
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* 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.bukkit;
|
||||
|
||||
/**
|
||||
* Adds methods to test if different API methods are possible based on implementation.
|
||||
*/
|
||||
public class BukkitImplementationTester {
|
||||
|
||||
private BukkitImplementationTester() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Known Bukkit implementations
|
||||
*/
|
||||
public enum BukkitImplementation {
|
||||
CRAFTBUKKIT,
|
||||
SPIGOT,
|
||||
PAPER,
|
||||
}
|
||||
|
||||
private static final String implementationMessage = "************************************************" +
|
||||
"* Note: PaperMC (https://papermc.io/) is *" +
|
||||
"* recommended for optimal performance with *" +
|
||||
"* WorldEdit, WorldGuard, or CraftBook. *" +
|
||||
"************************************************";
|
||||
|
||||
private static BukkitImplementation implementation;
|
||||
|
||||
/**
|
||||
* Gets the implementation currently in use on the server.
|
||||
*
|
||||
* @return The server implementation
|
||||
*/
|
||||
public static BukkitImplementation getImplementation() {
|
||||
if (implementation == null) {
|
||||
try {
|
||||
Class.forName("com.destroystokyo.paper.PaperConfig");
|
||||
implementation = BukkitImplementation.PAPER;
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
Class.forName("org.spigotmc.SpigotConfig");
|
||||
implementation = BukkitImplementation.SPIGOT;
|
||||
} catch (Exception e2) {
|
||||
implementation = BukkitImplementation.CRAFTBUKKIT;
|
||||
}
|
||||
}
|
||||
|
||||
if (implementation != BukkitImplementation.PAPER) {
|
||||
// Bukkit.getServer().getConsoleSender().sendMessage(implementationMessage); // TODO Decide if good idea.
|
||||
}
|
||||
}
|
||||
|
||||
return implementation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this implementation is compatible with Spigot APIs
|
||||
*
|
||||
* @return If compatible with Spigot APIs
|
||||
*/
|
||||
public static boolean isSpigotCompatible() {
|
||||
return getImplementation() == BukkitImplementation.SPIGOT || getImplementation() == BukkitImplementation.PAPER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this implementation is compatible with Paper APIs
|
||||
*
|
||||
* @return If compatible with Paper APIs
|
||||
*/
|
||||
public static boolean isPaperCompatible() {
|
||||
return getImplementation() == BukkitImplementation.PAPER;
|
||||
}
|
||||
}
|
@ -177,6 +177,9 @@ public class WorldEditPlugin extends JavaPlugin //implements TabCompleter
|
||||
// platforms to be worried about... at the current time of writing
|
||||
WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent());
|
||||
|
||||
// Setup the BukkitImplementationTester.
|
||||
BukkitImplementationTester.getImplementation();
|
||||
|
||||
{ // Register 1.13 Material ids with LegacyMapper
|
||||
LegacyMapper legacyMapper = LegacyMapper.getInstance();
|
||||
for (Material m : Material.values()) {
|
||||
|
@ -94,7 +94,7 @@ public interface BukkitImplAdapter<T> extends IBukkitAdapter {
|
||||
Entity createEntity(Location location, BaseEntity state);
|
||||
|
||||
/**
|
||||
* Get a map of string -> properties
|
||||
* Get a map of {@code string -> property}.
|
||||
*
|
||||
* @param blockType The block type
|
||||
* @return The properties map
|
||||
|
@ -41,7 +41,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
||||
* Create a new instance.
|
||||
*
|
||||
* @param extent the extent
|
||||
* @param limit the limit (>= 0) or -1 for no limit
|
||||
* @param limit the limit (>= 0) or -1 for no limit
|
||||
*/
|
||||
public BlockChangeLimiter(Extent extent, int limit) {
|
||||
super(extent);
|
||||
@ -51,7 +51,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
||||
/**
|
||||
* Get the limit.
|
||||
*
|
||||
* @return the limit (>= 0) or -1 for no limit
|
||||
* @return the limit (>= 0) or -1 for no limit
|
||||
*/
|
||||
public int getLimit() {
|
||||
return limit;
|
||||
@ -60,7 +60,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
||||
/**
|
||||
* Set the limit.
|
||||
*
|
||||
* @param limit the limit (>= 0) or -1 for no limit
|
||||
* @param limit the limit (>= 0) or -1 for no limit
|
||||
*/
|
||||
public void setLimit(int limit) {
|
||||
checkArgument(limit >= -1, "limit >= -1 required");
|
||||
|
@ -17,7 +17,6 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
package com.sk89q.worldedit.internal.annotation;
|
||||
|
||||
import com.sk89q.worldedit.Vector;
|
||||
|
@ -40,7 +40,7 @@ import java.util.Map;
|
||||
* <p>Supported operators:</p>
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>Logical: &&, ||, ! (unary)</li>
|
||||
* <li>Logical: &&, ||, ! (unary)</li>
|
||||
* <li>Bitwise: ~ (unary), >>, <<</li>
|
||||
* <li>Arithmetic: +, -, *, /, % (modulo), ^ (power), - (unary), --, ++ (prefix only)</li>
|
||||
* <li>Comparison: <=, >=, >, <, ==, !=, ~= (near)</li>
|
||||
|
@ -112,7 +112,7 @@ public class SimpleDispatcher implements Dispatcher {
|
||||
@Override
|
||||
public Object call(String arguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
||||
// We have permission for this command if we have permissions for subcommands
|
||||
if (!testPermission(locals)) {
|
||||
if (parentCommands.length != 0 && !testPermission(locals)) {
|
||||
throw new CommandPermissionsException();
|
||||
}
|
||||
|
||||
|
@ -201,7 +201,7 @@ public class ParametricCallable extends AParametricCallable {
|
||||
@Override
|
||||
public Object call(String stringArguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
||||
// Test permission
|
||||
if (!testPermission(locals)) {
|
||||
if (parentCommands.length != 0 && !testPermission(locals)) {
|
||||
throw new CommandPermissionsException();
|
||||
}
|
||||
locals.putIfAbsent(CommandCallable.class, this);
|
||||
|
@ -221,7 +221,7 @@ public enum Style {
|
||||
* ChatColor.COLOR_CODE color code character. The alternate color code character will only be replaced
|
||||
* if it is immediately followed by 0-9, A-F, a-f, K-O, k-o, R or r.
|
||||
*
|
||||
* @param altColorChar The alternate color code character to replace. Ex: &
|
||||
* @param altColorChar The alternate color code character to replace. Ex: &
|
||||
* @param textToTranslate Text containing the alternate color code character.
|
||||
* @return Text containing the ChatColor.COLOR_CODE color code character.
|
||||
*/
|
||||
|
@ -99,7 +99,7 @@ public interface BlockType extends FawePattern, Comparable<BlockTypes> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the properties of this BlockType in a key->property mapping.
|
||||
* Gets the properties of this BlockType in a {@code key->property} mapping.
|
||||
*
|
||||
* @return The properties map
|
||||
*/
|
||||
|
@ -219,19 +219,24 @@ public enum BlockTypes implements BlockType {
|
||||
DARK_PRISMARINE_SLAB,
|
||||
DARK_PRISMARINE_STAIRS,
|
||||
DAYLIGHT_DETECTOR,
|
||||
DEAD_BRAIN_CORAL,
|
||||
DEAD_BRAIN_CORAL_BLOCK,
|
||||
DEAD_BRAIN_CORAL_FAN,
|
||||
DEAD_BRAIN_CORAL_WALL_FAN,
|
||||
DEAD_BUBBLE_CORAL,
|
||||
DEAD_BUBBLE_CORAL_BLOCK,
|
||||
DEAD_BUBBLE_CORAL_FAN,
|
||||
DEAD_BUBBLE_CORAL_WALL_FAN,
|
||||
DEAD_BUSH,
|
||||
DEAD_FIRE_CORAL,
|
||||
DEAD_FIRE_CORAL_BLOCK,
|
||||
DEAD_FIRE_CORAL_FAN,
|
||||
DEAD_FIRE_CORAL_WALL_FAN,
|
||||
DEAD_HORN_CORAL,
|
||||
DEAD_HORN_CORAL_BLOCK,
|
||||
DEAD_HORN_CORAL_FAN,
|
||||
DEAD_HORN_CORAL_WALL_FAN,
|
||||
DEAD_TUBE_CORAL,
|
||||
DEAD_TUBE_CORAL_BLOCK,
|
||||
DEAD_TUBE_CORAL_FAN,
|
||||
DEAD_TUBE_CORAL_WALL_FAN,
|
||||
@ -654,11 +659,6 @@ public enum BlockTypes implements BlockType {
|
||||
YELLOW_WOOL,
|
||||
ZOMBIE_HEAD,
|
||||
ZOMBIE_WALL_HEAD,
|
||||
DEAD_BRAIN_CORAL,
|
||||
DEAD_BUBBLE_CORAL,
|
||||
DEAD_FIRE_CORAL,
|
||||
DEAD_HORN_CORAL,
|
||||
DEAD_TUBE_CORAL,
|
||||
|
||||
;
|
||||
|
||||
|
@ -245,15 +245,20 @@ public enum ItemTypes implements ItemType {
|
||||
DARK_PRISMARINE_SLAB,
|
||||
DARK_PRISMARINE_STAIRS,
|
||||
DAYLIGHT_DETECTOR,
|
||||
DEAD_BRAIN_CORAL,
|
||||
DEAD_BRAIN_CORAL_BLOCK,
|
||||
DEAD_BRAIN_CORAL_FAN,
|
||||
DEAD_BUBBLE_CORAL,
|
||||
DEAD_BUBBLE_CORAL_BLOCK,
|
||||
DEAD_BUBBLE_CORAL_FAN,
|
||||
DEAD_BUSH,
|
||||
DEAD_FIRE_CORAL,
|
||||
DEAD_FIRE_CORAL_BLOCK,
|
||||
DEAD_FIRE_CORAL_FAN,
|
||||
DEAD_HORN_CORAL,
|
||||
DEAD_HORN_CORAL_BLOCK,
|
||||
DEAD_HORN_CORAL_FAN,
|
||||
DEAD_TUBE_CORAL,
|
||||
DEAD_TUBE_CORAL_BLOCK,
|
||||
DEAD_TUBE_CORAL_FAN,
|
||||
DEBUG_STICK,
|
||||
|
@ -46,8 +46,8 @@ public abstract class ChunkStore implements Closeable {
|
||||
public static final int DATA_VERSION_MC_1_13 = 1519;
|
||||
|
||||
/**
|
||||
* >> to chunk
|
||||
* << from chunk
|
||||
* {@code >>} - to chunk
|
||||
* {@code <<} - from chunk
|
||||
*/
|
||||
public static final int CHUNK_SHIFTS = 4;
|
||||
|
||||
|
@ -3949,6 +3949,31 @@
|
||||
"hasContainer": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_brain_coral",
|
||||
"localizedName": "Dead Brain Coral",
|
||||
"material": {
|
||||
"powerSource": false,
|
||||
"lightValue": 0,
|
||||
"hardness": 0.0,
|
||||
"resistance": 0.0,
|
||||
"ticksRandomly": false,
|
||||
"fullCube": false,
|
||||
"slipperiness": 0.6,
|
||||
"liquid": false,
|
||||
"solid": true,
|
||||
"movementBlocker": true,
|
||||
"burnable": false,
|
||||
"opaque": true,
|
||||
"replacedDuringPlacement": false,
|
||||
"toolRequired": true,
|
||||
"fragileWhenPushed": false,
|
||||
"unpushable": false,
|
||||
"mapColor": "#707070",
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_brain_coral_block",
|
||||
"localizedName": "Dead Brain Coral Block",
|
||||
@ -4024,6 +4049,31 @@
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_bubble_coral",
|
||||
"localizedName": "Dead Bubble Coral",
|
||||
"material": {
|
||||
"powerSource": false,
|
||||
"lightValue": 0,
|
||||
"hardness": 0.0,
|
||||
"resistance": 0.0,
|
||||
"ticksRandomly": false,
|
||||
"fullCube": false,
|
||||
"slipperiness": 0.6,
|
||||
"liquid": false,
|
||||
"solid": true,
|
||||
"movementBlocker": true,
|
||||
"burnable": false,
|
||||
"opaque": true,
|
||||
"replacedDuringPlacement": false,
|
||||
"toolRequired": true,
|
||||
"fragileWhenPushed": false,
|
||||
"unpushable": false,
|
||||
"mapColor": "#707070",
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_bubble_coral_block",
|
||||
"localizedName": "Dead Bubble Coral Block",
|
||||
@ -4124,6 +4174,31 @@
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_fire_coral",
|
||||
"localizedName": "Dead Fire Coral",
|
||||
"material": {
|
||||
"powerSource": false,
|
||||
"lightValue": 0,
|
||||
"hardness": 0.0,
|
||||
"resistance": 0.0,
|
||||
"ticksRandomly": false,
|
||||
"fullCube": false,
|
||||
"slipperiness": 0.6,
|
||||
"liquid": false,
|
||||
"solid": true,
|
||||
"movementBlocker": true,
|
||||
"burnable": false,
|
||||
"opaque": true,
|
||||
"replacedDuringPlacement": false,
|
||||
"toolRequired": true,
|
||||
"fragileWhenPushed": false,
|
||||
"unpushable": false,
|
||||
"mapColor": "#707070",
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_fire_coral_block",
|
||||
"localizedName": "Dead Fire Coral Block",
|
||||
@ -4199,6 +4274,31 @@
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_horn_coral",
|
||||
"localizedName": "Dead Horn Coral",
|
||||
"material": {
|
||||
"powerSource": false,
|
||||
"lightValue": 0,
|
||||
"hardness": 0.0,
|
||||
"resistance": 0.0,
|
||||
"ticksRandomly": false,
|
||||
"fullCube": false,
|
||||
"slipperiness": 0.6,
|
||||
"liquid": false,
|
||||
"solid": true,
|
||||
"movementBlocker": true,
|
||||
"burnable": false,
|
||||
"opaque": true,
|
||||
"replacedDuringPlacement": false,
|
||||
"toolRequired": true,
|
||||
"fragileWhenPushed": false,
|
||||
"unpushable": false,
|
||||
"mapColor": "#707070",
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_horn_coral_block",
|
||||
"localizedName": "Dead Horn Coral Block",
|
||||
@ -4274,6 +4374,31 @@
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_tube_coral",
|
||||
"localizedName": "Dead Tube Coral",
|
||||
"material": {
|
||||
"powerSource": false,
|
||||
"lightValue": 0,
|
||||
"hardness": 0.0,
|
||||
"resistance": 0.0,
|
||||
"ticksRandomly": false,
|
||||
"fullCube": false,
|
||||
"slipperiness": 0.6,
|
||||
"liquid": false,
|
||||
"solid": true,
|
||||
"movementBlocker": true,
|
||||
"burnable": false,
|
||||
"opaque": true,
|
||||
"replacedDuringPlacement": false,
|
||||
"toolRequired": true,
|
||||
"fragileWhenPushed": false,
|
||||
"unpushable": false,
|
||||
"mapColor": "#707070",
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_tube_coral_block",
|
||||
"localizedName": "Dead Tube Coral Block",
|
||||
@ -6995,7 +7120,7 @@
|
||||
"fragileWhenPushed": true,
|
||||
"unpushable": false,
|
||||
"mapColor": "#ff0000",
|
||||
"isTranslucent": true,
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
@ -14045,7 +14170,7 @@
|
||||
"fragileWhenPushed": true,
|
||||
"unpushable": false,
|
||||
"mapColor": "#4040ff",
|
||||
"isTranslucent": true,
|
||||
"isTranslucent": false,
|
||||
"hasContainer": false
|
||||
}
|
||||
},
|
||||
|
@ -803,6 +803,10 @@
|
||||
"id": "minecraft:daylight_detector",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_brain_coral",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_brain_coral_block",
|
||||
"localizedName": "Air"
|
||||
@ -811,6 +815,10 @@
|
||||
"id": "minecraft:dead_brain_coral_fan",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_bubble_coral",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_bubble_coral_block",
|
||||
"localizedName": "Air"
|
||||
@ -823,6 +831,10 @@
|
||||
"id": "minecraft:dead_bush",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_fire_coral",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_fire_coral_block",
|
||||
"localizedName": "Air"
|
||||
@ -831,6 +843,10 @@
|
||||
"id": "minecraft:dead_fire_coral_fan",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_horn_coral",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_horn_coral_block",
|
||||
"localizedName": "Air"
|
||||
@ -839,6 +855,10 @@
|
||||
"id": "minecraft:dead_horn_coral_fan",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_tube_coral",
|
||||
"localizedName": "Air"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:dead_tube_coral_block",
|
||||
"localizedName": "Air"
|
||||
@ -1749,7 +1769,7 @@
|
||||
},
|
||||
{
|
||||
"id": "minecraft:lingering_potion",
|
||||
"localizedName": "Lingering Potion"
|
||||
"localizedName": "Lingering Water Bottle"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:llama_spawn_egg",
|
||||
@ -2237,7 +2257,7 @@
|
||||
},
|
||||
{
|
||||
"id": "minecraft:potion",
|
||||
"localizedName": "Potion"
|
||||
"localizedName": "Water Bottle"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:powered_rail",
|
||||
@ -2677,7 +2697,7 @@
|
||||
},
|
||||
{
|
||||
"id": "minecraft:splash_potion",
|
||||
"localizedName": "Splash Potion"
|
||||
"localizedName": "Splash Water Bottle"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:sponge",
|
||||
@ -2885,7 +2905,7 @@
|
||||
},
|
||||
{
|
||||
"id": "minecraft:tipped_arrow",
|
||||
"localizedName": "Tipped Arrow"
|
||||
"localizedName": "Arrow of Poison"
|
||||
},
|
||||
{
|
||||
"id": "minecraft:tnt",
|
||||
|
@ -16,6 +16,7 @@
|
||||
* 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.forge;
|
||||
|
||||
import com.sk89q.worldedit.blocks.BaseItem;
|
||||
|
@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import com.google.common.io.Files;
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import com.sk89q.worldedit.BlockVector;
|
||||
import com.sk89q.worldedit.BlockVector2D;
|
||||
import com.sk89q.worldedit.EditSession;
|
||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
@ -47,6 +48,8 @@ import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
||||
import com.sk89q.worldedit.world.weather.WeatherType;
|
||||
import com.sk89q.worldedit.world.weather.WeatherTypes;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockLeaves;
|
||||
import net.minecraft.block.BlockOldLeaf;
|
||||
@ -86,6 +89,7 @@ import net.minecraft.world.gen.feature.WorldGenTaiga1;
|
||||
import net.minecraft.world.gen.feature.WorldGenTaiga2;
|
||||
import net.minecraft.world.gen.feature.WorldGenTrees;
|
||||
import net.minecraft.world.gen.feature.WorldGenerator;
|
||||
import net.minecraft.world.storage.WorldInfo;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
|
||||
import java.io.File;
|
||||
@ -93,7 +97,6 @@ import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ -351,25 +354,75 @@ public class ForgeWorld extends AbstractWorld {
|
||||
return generator != null && generator.generate(getWorld(), random, ForgeAdapter.toBlockPos(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkLoadedChunk(Vector pt) {
|
||||
getWorld().getChunkFromBlockCoords(ForgeAdapter.toBlockPos(pt));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fixAfterFastMode(Iterable<BlockVector2D> chunks) {
|
||||
fixLighting(chunks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fixLighting(Iterable<BlockVector2D> chunks) {
|
||||
World world = getWorld();
|
||||
for (BlockVector2D chunk : chunks) {
|
||||
world.getChunkFromChunkCoords(chunk.getBlockX(), chunk.getBlockZ()).resetRelightChecks();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean playEffect(Vector position, int type, int data) {
|
||||
getWorld().playEvent(type, ForgeAdapter.toBlockPos(position), data);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WeatherType getWeather() {
|
||||
// TODO Weather implementation
|
||||
return null;
|
||||
WorldInfo info = getWorld().getWorldInfo();
|
||||
if (info.isThundering()) {
|
||||
return WeatherTypes.THUNDER_STORM;
|
||||
}
|
||||
if (info.isRaining()) {
|
||||
return WeatherTypes.RAIN;
|
||||
}
|
||||
return WeatherTypes.CLEAR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getRemainingWeatherDuration() {
|
||||
return 0;
|
||||
WorldInfo info = getWorld().getWorldInfo();
|
||||
if (info.isThundering()) {
|
||||
return info.getThunderTime();
|
||||
}
|
||||
if (info.isRaining()) {
|
||||
return info.getRainTime();
|
||||
}
|
||||
return info.getCleanWeatherTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWeather(WeatherType weatherType) {
|
||||
|
||||
setWeather(weatherType, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWeather(WeatherType weatherType, long duration) {
|
||||
|
||||
WorldInfo info = getWorld().getWorldInfo();
|
||||
if (WeatherTypes.THUNDER_STORM.equals(weatherType)) {
|
||||
info.setCleanWeatherTime(0);
|
||||
info.setThundering(true);
|
||||
info.setThunderTime((int) duration);
|
||||
} else if (WeatherTypes.RAIN.equals(weatherType)) {
|
||||
info.setCleanWeatherTime(0);
|
||||
info.setRaining(true);
|
||||
info.setRainTime((int) duration);
|
||||
} else if (WeatherTypes.CLEAR.equals(weatherType)) {
|
||||
info.setRaining(false);
|
||||
info.setThundering(false);
|
||||
info.setCleanWeatherTime((int) duration);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren