Ensure IDSU is interdimensional. Fixes #2236

This commit is contained in:
modmuss50 2021-06-02 20:53:20 +01:00
parent d20265ba86
commit 315891885d
2 changed files with 9 additions and 8 deletions

View file

@ -25,6 +25,7 @@
package techreborn.blockentity.storage.energy.idsu;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.PersistentState;
import net.minecraft.world.World;
@ -37,16 +38,16 @@ public class IDSUManager extends PersistentState {
private static final String KEY = "techreborn_idsu";
public IDSUManager() {
private IDSUManager() {
}
@NotNull
public static IDSUPlayer getPlayer(World world, String uuid) {
return get(world).getPlayer(uuid);
public static IDSUPlayer getPlayer(MinecraftServer server, String uuid) {
return get(server).getPlayer(uuid);
}
public static IDSUManager get(World world) {
ServerWorld serverWorld = (ServerWorld) world;
private static IDSUManager get(MinecraftServer server) {
ServerWorld serverWorld = server.getWorld(World.OVERWORLD);
return serverWorld.getPersistentStateManager().getOrCreate(IDSUManager::createFromTag, IDSUManager::new, KEY);
}

View file

@ -58,7 +58,7 @@ public class InterdimensionalSUBlockEntity extends EnergyStorageBlockEntity impl
if (world.isClient) {
return clientEnergy;
}
return IDSUManager.getPlayer(world, ownerUdid).getEnergy();
return IDSUManager.getPlayer(world.getServer(), ownerUdid).getEnergy();
}
@Override
@ -69,7 +69,7 @@ public class InterdimensionalSUBlockEntity extends EnergyStorageBlockEntity impl
if (world.isClient) {
clientEnergy = energy;
} else {
IDSUManager.getPlayer(world, ownerUdid).setEnergy(energy);
IDSUManager.getPlayer(world.getServer(), ownerUdid).setEnergy(energy);
}
}
@ -81,7 +81,7 @@ public class InterdimensionalSUBlockEntity extends EnergyStorageBlockEntity impl
if (world.isClient) {
throw new UnsupportedOperationException("cannot set energy on the client!");
}
double energy = IDSUManager.getPlayer(world, ownerUdid).getEnergy();
double energy = IDSUManager.getPlayer(world.getServer(), ownerUdid).getEnergy();
if (extract > energy) {
extract = energy;
}