mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 08:25:31 +00:00
implement reloads on bukkit
This commit is contained in:
parent
c6f42da61b
commit
8560438bac
@ -20,6 +20,9 @@ package com.dfsek.terra.bukkit;
|
|||||||
import com.dfsek.tectonic.api.TypeRegistry;
|
import com.dfsek.tectonic.api.TypeRegistry;
|
||||||
import com.dfsek.tectonic.api.depth.DepthTracker;
|
import com.dfsek.tectonic.api.depth.DepthTracker;
|
||||||
import com.dfsek.tectonic.api.exception.LoadException;
|
import com.dfsek.tectonic.api.exception.LoadException;
|
||||||
|
|
||||||
|
import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -36,8 +39,13 @@ import com.dfsek.terra.bukkit.handles.BukkitItemHandle;
|
|||||||
import com.dfsek.terra.bukkit.handles.BukkitWorldHandle;
|
import com.dfsek.terra.bukkit.handles.BukkitWorldHandle;
|
||||||
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
public class PlatformImpl extends AbstractPlatform {
|
public class PlatformImpl extends AbstractPlatform {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(PlatformImpl.class);
|
||||||
|
|
||||||
private final ItemHandle itemHandle = new BukkitItemHandle();
|
private final ItemHandle itemHandle = new BukkitItemHandle();
|
||||||
|
|
||||||
private final WorldHandle handle = new BukkitWorldHandle();
|
private final WorldHandle handle = new BukkitWorldHandle();
|
||||||
@ -55,7 +63,20 @@ public class PlatformImpl extends AbstractPlatform {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean reload() {
|
public boolean reload() {
|
||||||
return false;
|
getTerraConfig().load(this);
|
||||||
|
getRawConfigRegistry().clear();
|
||||||
|
boolean succeed = getRawConfigRegistry().loadAll(this);
|
||||||
|
|
||||||
|
Bukkit.getWorlds().forEach(world -> {
|
||||||
|
if(world.getGenerator() instanceof BukkitChunkGeneratorWrapper wrapper) {
|
||||||
|
getConfigRegistry().get(wrapper.getPack().getRegistryKey()).ifPresent(pack -> {
|
||||||
|
wrapper.setPack(pack);
|
||||||
|
LOGGER.info("Replaced pack in chunk generator for world {}", world);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return succeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,8 +40,8 @@ import com.dfsek.terra.bukkit.world.BukkitProtoWorld;
|
|||||||
|
|
||||||
|
|
||||||
public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGenerator implements GeneratorWrapper {
|
public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGenerator implements GeneratorWrapper {
|
||||||
private final ChunkGenerator delegate;
|
private ChunkGenerator delegate;
|
||||||
private final ConfigPack pack;
|
private ConfigPack pack;
|
||||||
private final BlockState air;
|
private final BlockState air;
|
||||||
|
|
||||||
public BukkitChunkGeneratorWrapper(ChunkGenerator delegate, ConfigPack pack, BlockState air) {
|
public BukkitChunkGeneratorWrapper(ChunkGenerator delegate, ConfigPack pack, BlockState air) {
|
||||||
@ -50,6 +50,15 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener
|
|||||||
this.air = air;
|
this.air = air;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDelegate(ChunkGenerator delegate) {
|
||||||
|
this.delegate = delegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPack(ConfigPack pack) {
|
||||||
|
this.pack = pack;
|
||||||
|
setDelegate(pack.getGeneratorProvider().newInstance(pack));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable BiomeProvider getDefaultBiomeProvider(@NotNull WorldInfo worldInfo) {
|
public @Nullable BiomeProvider getDefaultBiomeProvider(@NotNull WorldInfo worldInfo) {
|
||||||
return new BukkitBiomeProvider(pack.getBiomeProvider());
|
return new BukkitBiomeProvider(pack.getBiomeProvider());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user