geforkt von Mirrors/FastAsyncWorldEdit
Merge upstream changes through 7961fa58
Signed-off-by: Byron Marohn <combustible@live.com>
Dieser Commit ist enthalten in:
Commit
801793cc12
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,7 +10,6 @@ eclipse
|
|||||||
bin
|
bin
|
||||||
build
|
build
|
||||||
target
|
target
|
||||||
gradle
|
|
||||||
.gradle
|
.gradle
|
||||||
forge-download
|
forge-download
|
||||||
out
|
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 {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
@ -16,15 +14,21 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
|
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4'
|
||||||
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.3.0'
|
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.7.5'
|
||||||
classpath 'org.ajoberstar:gradle-git:1.5.1'
|
classpath 'org.ajoberstar:gradle-git:1.7.2'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'net.minecrell.licenser' version '0.4.1' apply false
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
clean { delete "target" }
|
clean { delete "target" }
|
||||||
|
|
||||||
|
print new File('splash.txt').text
|
||||||
|
|
||||||
group = 'com.boydti.fawe'
|
group = 'com.boydti.fawe'
|
||||||
def revision = ""
|
def revision = ""
|
||||||
def buildNumber = ""
|
def buildNumber = ""
|
||||||
@ -57,9 +61,8 @@ subprojects {
|
|||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'maven'
|
apply plugin: 'maven'
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
apply plugin: 'com.github.johnrengelman.shadow'
|
||||||
|
// Enable this requires putting license header files in many, many FAWE files
|
||||||
sourceCompatibility = 1.8
|
//apply plugin: 'net.minecrell.licenser'
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
ext.internalVersion = version
|
ext.internalVersion = version
|
||||||
|
|
||||||
@ -70,10 +73,11 @@ subprojects {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
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://maven.sk89q.com/repo/" }
|
||||||
maven { url "http://repo.maven.apache.org/maven2" }
|
maven { url "http://repo.maven.apache.org/maven2" }
|
||||||
// Fawe
|
// Fawe
|
||||||
|
maven {url "http://ci.athion.net/job/FAWE-WorldGuard-1.13/ws/mvn/"}
|
||||||
maven {url "https://mvnrepository.com/artifact/"}
|
maven {url "https://mvnrepository.com/artifact/"}
|
||||||
maven {url "http://repo.dmulloy2.net/content/groups/public/"}
|
maven {url "http://repo.dmulloy2.net/content/groups/public/"}
|
||||||
maven {url "https://repo.destroystokyo.com/repository/maven-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/" }
|
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) {
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||||
classifier = 'javadoc'
|
classifier = 'javadoc'
|
||||||
from javadoc.destinationDir
|
from javadoc.destinationDir
|
||||||
@ -95,6 +106,7 @@ subprojects {
|
|||||||
|
|
||||||
artifacts {
|
artifacts {
|
||||||
archives jar
|
archives jar
|
||||||
|
archives javadocJar
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(name.equals('worldedit-forge') || name.equals('worldedit-sponge'))) {
|
if (!(name.equals('worldedit-forge') || name.equals('worldedit-sponge'))) {
|
||||||
@ -122,4 +134,10 @@ subprojects {
|
|||||||
exclude '.cache'
|
exclude '.cache'
|
||||||
exclude 'LICENSE*'
|
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="ParameterName"/>
|
||||||
<!-- <module name="TypeName"/> Unlikely that we would miss this in a PR -->
|
<!-- <module name="TypeName"/> Unlikely that we would miss this in a PR -->
|
||||||
</module>
|
</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>
|
</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
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
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
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
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
|
// platforms to be worried about... at the current time of writing
|
||||||
WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent());
|
WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent());
|
||||||
|
|
||||||
|
// Setup the BukkitImplementationTester.
|
||||||
|
BukkitImplementationTester.getImplementation();
|
||||||
|
|
||||||
{ // Register 1.13 Material ids with LegacyMapper
|
{ // Register 1.13 Material ids with LegacyMapper
|
||||||
LegacyMapper legacyMapper = LegacyMapper.getInstance();
|
LegacyMapper legacyMapper = LegacyMapper.getInstance();
|
||||||
for (Material m : Material.values()) {
|
for (Material m : Material.values()) {
|
||||||
|
@ -94,7 +94,7 @@ public interface BukkitImplAdapter<T> extends IBukkitAdapter {
|
|||||||
Entity createEntity(Location location, BaseEntity state);
|
Entity createEntity(Location location, BaseEntity state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a map of string -> properties
|
* Get a map of {@code string -> property}.
|
||||||
*
|
*
|
||||||
* @param blockType The block type
|
* @param blockType The block type
|
||||||
* @return The properties map
|
* @return The properties map
|
||||||
|
@ -41,7 +41,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
|||||||
* Create a new instance.
|
* Create a new instance.
|
||||||
*
|
*
|
||||||
* @param extent the extent
|
* @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) {
|
public BlockChangeLimiter(Extent extent, int limit) {
|
||||||
super(extent);
|
super(extent);
|
||||||
@ -51,7 +51,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
|||||||
/**
|
/**
|
||||||
* Get the limit.
|
* Get the limit.
|
||||||
*
|
*
|
||||||
* @return the limit (>= 0) or -1 for no limit
|
* @return the limit (>= 0) or -1 for no limit
|
||||||
*/
|
*/
|
||||||
public int getLimit() {
|
public int getLimit() {
|
||||||
return limit;
|
return limit;
|
||||||
@ -60,7 +60,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent {
|
|||||||
/**
|
/**
|
||||||
* Set the limit.
|
* 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) {
|
public void setLimit(int limit) {
|
||||||
checkArgument(limit >= -1, "limit >= -1 required");
|
checkArgument(limit >= -1, "limit >= -1 required");
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
* 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.internal.annotation;
|
package com.sk89q.worldedit.internal.annotation;
|
||||||
|
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.Vector;
|
||||||
|
@ -40,7 +40,7 @@ import java.util.Map;
|
|||||||
* <p>Supported operators:</p>
|
* <p>Supported operators:</p>
|
||||||
* <p>
|
* <p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Logical: &&, ||, ! (unary)</li>
|
* <li>Logical: &&, ||, ! (unary)</li>
|
||||||
* <li>Bitwise: ~ (unary), >>, <<</li>
|
* <li>Bitwise: ~ (unary), >>, <<</li>
|
||||||
* <li>Arithmetic: +, -, *, /, % (modulo), ^ (power), - (unary), --, ++ (prefix only)</li>
|
* <li>Arithmetic: +, -, *, /, % (modulo), ^ (power), - (unary), --, ++ (prefix only)</li>
|
||||||
* <li>Comparison: <=, >=, >, <, ==, !=, ~= (near)</li>
|
* <li>Comparison: <=, >=, >, <, ==, !=, ~= (near)</li>
|
||||||
|
@ -112,7 +112,7 @@ public class SimpleDispatcher implements Dispatcher {
|
|||||||
@Override
|
@Override
|
||||||
public Object call(String arguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
public Object call(String arguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
||||||
// We have permission for this command if we have permissions for subcommands
|
// We have permission for this command if we have permissions for subcommands
|
||||||
if (!testPermission(locals)) {
|
if (parentCommands.length != 0 && !testPermission(locals)) {
|
||||||
throw new CommandPermissionsException();
|
throw new CommandPermissionsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ public class ParametricCallable extends AParametricCallable {
|
|||||||
@Override
|
@Override
|
||||||
public Object call(String stringArguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
public Object call(String stringArguments, CommandLocals locals, String[] parentCommands) throws CommandException {
|
||||||
// Test permission
|
// Test permission
|
||||||
if (!testPermission(locals)) {
|
if (parentCommands.length != 0 && !testPermission(locals)) {
|
||||||
throw new CommandPermissionsException();
|
throw new CommandPermissionsException();
|
||||||
}
|
}
|
||||||
locals.putIfAbsent(CommandCallable.class, this);
|
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
|
* 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.
|
* 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.
|
* @param textToTranslate Text containing the alternate color code character.
|
||||||
* @return Text containing the ChatColor.COLOR_CODE 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
|
* @return The properties map
|
||||||
*/
|
*/
|
||||||
|
@ -219,19 +219,24 @@ public enum BlockTypes implements BlockType {
|
|||||||
DARK_PRISMARINE_SLAB,
|
DARK_PRISMARINE_SLAB,
|
||||||
DARK_PRISMARINE_STAIRS,
|
DARK_PRISMARINE_STAIRS,
|
||||||
DAYLIGHT_DETECTOR,
|
DAYLIGHT_DETECTOR,
|
||||||
|
DEAD_BRAIN_CORAL,
|
||||||
DEAD_BRAIN_CORAL_BLOCK,
|
DEAD_BRAIN_CORAL_BLOCK,
|
||||||
DEAD_BRAIN_CORAL_FAN,
|
DEAD_BRAIN_CORAL_FAN,
|
||||||
DEAD_BRAIN_CORAL_WALL_FAN,
|
DEAD_BRAIN_CORAL_WALL_FAN,
|
||||||
|
DEAD_BUBBLE_CORAL,
|
||||||
DEAD_BUBBLE_CORAL_BLOCK,
|
DEAD_BUBBLE_CORAL_BLOCK,
|
||||||
DEAD_BUBBLE_CORAL_FAN,
|
DEAD_BUBBLE_CORAL_FAN,
|
||||||
DEAD_BUBBLE_CORAL_WALL_FAN,
|
DEAD_BUBBLE_CORAL_WALL_FAN,
|
||||||
DEAD_BUSH,
|
DEAD_BUSH,
|
||||||
|
DEAD_FIRE_CORAL,
|
||||||
DEAD_FIRE_CORAL_BLOCK,
|
DEAD_FIRE_CORAL_BLOCK,
|
||||||
DEAD_FIRE_CORAL_FAN,
|
DEAD_FIRE_CORAL_FAN,
|
||||||
DEAD_FIRE_CORAL_WALL_FAN,
|
DEAD_FIRE_CORAL_WALL_FAN,
|
||||||
|
DEAD_HORN_CORAL,
|
||||||
DEAD_HORN_CORAL_BLOCK,
|
DEAD_HORN_CORAL_BLOCK,
|
||||||
DEAD_HORN_CORAL_FAN,
|
DEAD_HORN_CORAL_FAN,
|
||||||
DEAD_HORN_CORAL_WALL_FAN,
|
DEAD_HORN_CORAL_WALL_FAN,
|
||||||
|
DEAD_TUBE_CORAL,
|
||||||
DEAD_TUBE_CORAL_BLOCK,
|
DEAD_TUBE_CORAL_BLOCK,
|
||||||
DEAD_TUBE_CORAL_FAN,
|
DEAD_TUBE_CORAL_FAN,
|
||||||
DEAD_TUBE_CORAL_WALL_FAN,
|
DEAD_TUBE_CORAL_WALL_FAN,
|
||||||
@ -654,11 +659,6 @@ public enum BlockTypes implements BlockType {
|
|||||||
YELLOW_WOOL,
|
YELLOW_WOOL,
|
||||||
ZOMBIE_HEAD,
|
ZOMBIE_HEAD,
|
||||||
ZOMBIE_WALL_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_SLAB,
|
||||||
DARK_PRISMARINE_STAIRS,
|
DARK_PRISMARINE_STAIRS,
|
||||||
DAYLIGHT_DETECTOR,
|
DAYLIGHT_DETECTOR,
|
||||||
|
DEAD_BRAIN_CORAL,
|
||||||
DEAD_BRAIN_CORAL_BLOCK,
|
DEAD_BRAIN_CORAL_BLOCK,
|
||||||
DEAD_BRAIN_CORAL_FAN,
|
DEAD_BRAIN_CORAL_FAN,
|
||||||
|
DEAD_BUBBLE_CORAL,
|
||||||
DEAD_BUBBLE_CORAL_BLOCK,
|
DEAD_BUBBLE_CORAL_BLOCK,
|
||||||
DEAD_BUBBLE_CORAL_FAN,
|
DEAD_BUBBLE_CORAL_FAN,
|
||||||
DEAD_BUSH,
|
DEAD_BUSH,
|
||||||
|
DEAD_FIRE_CORAL,
|
||||||
DEAD_FIRE_CORAL_BLOCK,
|
DEAD_FIRE_CORAL_BLOCK,
|
||||||
DEAD_FIRE_CORAL_FAN,
|
DEAD_FIRE_CORAL_FAN,
|
||||||
|
DEAD_HORN_CORAL,
|
||||||
DEAD_HORN_CORAL_BLOCK,
|
DEAD_HORN_CORAL_BLOCK,
|
||||||
DEAD_HORN_CORAL_FAN,
|
DEAD_HORN_CORAL_FAN,
|
||||||
|
DEAD_TUBE_CORAL,
|
||||||
DEAD_TUBE_CORAL_BLOCK,
|
DEAD_TUBE_CORAL_BLOCK,
|
||||||
DEAD_TUBE_CORAL_FAN,
|
DEAD_TUBE_CORAL_FAN,
|
||||||
DEBUG_STICK,
|
DEBUG_STICK,
|
||||||
|
@ -46,8 +46,8 @@ public abstract class ChunkStore implements Closeable {
|
|||||||
public static final int DATA_VERSION_MC_1_13 = 1519;
|
public static final int DATA_VERSION_MC_1_13 = 1519;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* >> to chunk
|
* {@code >>} - to chunk
|
||||||
* << from chunk
|
* {@code <<} - from chunk
|
||||||
*/
|
*/
|
||||||
public static final int CHUNK_SHIFTS = 4;
|
public static final int CHUNK_SHIFTS = 4;
|
||||||
|
|
||||||
|
@ -3949,6 +3949,31 @@
|
|||||||
"hasContainer": true
|
"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",
|
"id": "minecraft:dead_brain_coral_block",
|
||||||
"localizedName": "Dead Brain Coral Block",
|
"localizedName": "Dead Brain Coral Block",
|
||||||
@ -4024,6 +4049,31 @@
|
|||||||
"hasContainer": false
|
"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",
|
"id": "minecraft:dead_bubble_coral_block",
|
||||||
"localizedName": "Dead Bubble Coral Block",
|
"localizedName": "Dead Bubble Coral Block",
|
||||||
@ -4124,6 +4174,31 @@
|
|||||||
"hasContainer": false
|
"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",
|
"id": "minecraft:dead_fire_coral_block",
|
||||||
"localizedName": "Dead Fire Coral Block",
|
"localizedName": "Dead Fire Coral Block",
|
||||||
@ -4199,6 +4274,31 @@
|
|||||||
"hasContainer": false
|
"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",
|
"id": "minecraft:dead_horn_coral_block",
|
||||||
"localizedName": "Dead Horn Coral Block",
|
"localizedName": "Dead Horn Coral Block",
|
||||||
@ -4274,6 +4374,31 @@
|
|||||||
"hasContainer": false
|
"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",
|
"id": "minecraft:dead_tube_coral_block",
|
||||||
"localizedName": "Dead Tube Coral Block",
|
"localizedName": "Dead Tube Coral Block",
|
||||||
@ -6995,7 +7120,7 @@
|
|||||||
"fragileWhenPushed": true,
|
"fragileWhenPushed": true,
|
||||||
"unpushable": false,
|
"unpushable": false,
|
||||||
"mapColor": "#ff0000",
|
"mapColor": "#ff0000",
|
||||||
"isTranslucent": true,
|
"isTranslucent": false,
|
||||||
"hasContainer": false
|
"hasContainer": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -14045,7 +14170,7 @@
|
|||||||
"fragileWhenPushed": true,
|
"fragileWhenPushed": true,
|
||||||
"unpushable": false,
|
"unpushable": false,
|
||||||
"mapColor": "#4040ff",
|
"mapColor": "#4040ff",
|
||||||
"isTranslucent": true,
|
"isTranslucent": false,
|
||||||
"hasContainer": false
|
"hasContainer": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -803,6 +803,10 @@
|
|||||||
"id": "minecraft:daylight_detector",
|
"id": "minecraft:daylight_detector",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft:dead_brain_coral",
|
||||||
|
"localizedName": "Air"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:dead_brain_coral_block",
|
"id": "minecraft:dead_brain_coral_block",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
@ -811,6 +815,10 @@
|
|||||||
"id": "minecraft:dead_brain_coral_fan",
|
"id": "minecraft:dead_brain_coral_fan",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft:dead_bubble_coral",
|
||||||
|
"localizedName": "Air"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:dead_bubble_coral_block",
|
"id": "minecraft:dead_bubble_coral_block",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
@ -823,6 +831,10 @@
|
|||||||
"id": "minecraft:dead_bush",
|
"id": "minecraft:dead_bush",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft:dead_fire_coral",
|
||||||
|
"localizedName": "Air"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:dead_fire_coral_block",
|
"id": "minecraft:dead_fire_coral_block",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
@ -831,6 +843,10 @@
|
|||||||
"id": "minecraft:dead_fire_coral_fan",
|
"id": "minecraft:dead_fire_coral_fan",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft:dead_horn_coral",
|
||||||
|
"localizedName": "Air"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:dead_horn_coral_block",
|
"id": "minecraft:dead_horn_coral_block",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
@ -839,6 +855,10 @@
|
|||||||
"id": "minecraft:dead_horn_coral_fan",
|
"id": "minecraft:dead_horn_coral_fan",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft:dead_tube_coral",
|
||||||
|
"localizedName": "Air"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:dead_tube_coral_block",
|
"id": "minecraft:dead_tube_coral_block",
|
||||||
"localizedName": "Air"
|
"localizedName": "Air"
|
||||||
@ -1749,7 +1769,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:lingering_potion",
|
"id": "minecraft:lingering_potion",
|
||||||
"localizedName": "Lingering Potion"
|
"localizedName": "Lingering Water Bottle"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:llama_spawn_egg",
|
"id": "minecraft:llama_spawn_egg",
|
||||||
@ -2237,7 +2257,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:potion",
|
"id": "minecraft:potion",
|
||||||
"localizedName": "Potion"
|
"localizedName": "Water Bottle"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:powered_rail",
|
"id": "minecraft:powered_rail",
|
||||||
@ -2677,7 +2697,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:splash_potion",
|
"id": "minecraft:splash_potion",
|
||||||
"localizedName": "Splash Potion"
|
"localizedName": "Splash Water Bottle"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:sponge",
|
"id": "minecraft:sponge",
|
||||||
@ -2885,7 +2905,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:tipped_arrow",
|
"id": "minecraft:tipped_arrow",
|
||||||
"localizedName": "Tipped Arrow"
|
"localizedName": "Arrow of Poison"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minecraft:tnt",
|
"id": "minecraft:tnt",
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
* You should have received a copy of the GNU Lesser General Public License
|
* 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/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.sk89q.worldedit.forge;
|
package com.sk89q.worldedit.forge;
|
||||||
|
|
||||||
import com.sk89q.worldedit.blocks.BaseItem;
|
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.google.common.io.Files;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.BlockVector;
|
||||||
|
import com.sk89q.worldedit.BlockVector2D;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
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.item.ItemTypes;
|
||||||
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
||||||
import com.sk89q.worldedit.world.weather.WeatherType;
|
import com.sk89q.worldedit.world.weather.WeatherType;
|
||||||
|
import com.sk89q.worldedit.world.weather.WeatherTypes;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockLeaves;
|
import net.minecraft.block.BlockLeaves;
|
||||||
import net.minecraft.block.BlockOldLeaf;
|
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.WorldGenTaiga2;
|
||||||
import net.minecraft.world.gen.feature.WorldGenTrees;
|
import net.minecraft.world.gen.feature.WorldGenTrees;
|
||||||
import net.minecraft.world.gen.feature.WorldGenerator;
|
import net.minecraft.world.gen.feature.WorldGenerator;
|
||||||
|
import net.minecraft.world.storage.WorldInfo;
|
||||||
import net.minecraftforge.common.DimensionManager;
|
import net.minecraftforge.common.DimensionManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -93,7 +97,6 @@ import java.lang.ref.WeakReference;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
@ -351,25 +354,75 @@ public class ForgeWorld extends AbstractWorld {
|
|||||||
return generator != null && generator.generate(getWorld(), random, ForgeAdapter.toBlockPos(position));
|
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
|
@Override
|
||||||
public WeatherType getWeather() {
|
public WeatherType getWeather() {
|
||||||
// TODO Weather implementation
|
WorldInfo info = getWorld().getWorldInfo();
|
||||||
return null;
|
if (info.isThundering()) {
|
||||||
|
return WeatherTypes.THUNDER_STORM;
|
||||||
|
}
|
||||||
|
if (info.isRaining()) {
|
||||||
|
return WeatherTypes.RAIN;
|
||||||
|
}
|
||||||
|
return WeatherTypes.CLEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getRemainingWeatherDuration() {
|
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
|
@Override
|
||||||
public void setWeather(WeatherType weatherType) {
|
public void setWeather(WeatherType weatherType) {
|
||||||
|
setWeather(weatherType, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setWeather(WeatherType weatherType, long duration) {
|
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
|
@Override
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren