Merge pull request #425 from sk89q/feature/forge-world-improvements

Implement some optional methods in ForgeWorld
Dieser Commit ist enthalten in:
Matthew Miller 2018-10-04 15:59:15 +10:00 committet von GitHub
Commit 5aa8f7784e
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23

Datei anzeigen

@ -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