Started work on Script Reload Listener
This commit is contained in:
parent
2820c9fb3b
commit
ceed903993
|
|
@ -1,6 +1,7 @@
|
|||
package tschipp.carryon.common.scripting;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
public class CarryOnOverride
|
||||
{
|
||||
|
|
@ -46,16 +47,14 @@ public class CarryOnOverride
|
|||
|
||||
private boolean isBlock;
|
||||
private boolean isEntity;
|
||||
private final String path;
|
||||
private String resourceLocation;
|
||||
|
||||
|
||||
public CarryOnOverride(String path)
|
||||
{
|
||||
this.path = path;
|
||||
this.resourceLocation = path;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getCommandInit()
|
||||
{
|
||||
return commandInit;
|
||||
|
|
@ -131,7 +130,7 @@ public class CarryOnOverride
|
|||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((path == null) ? 0 : path.hashCode());
|
||||
result = prime * result + ((resourceLocation == null) ? 0 : resourceLocation.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -225,12 +224,12 @@ public class CarryOnOverride
|
|||
return false;
|
||||
if (isEntity != other.isEntity)
|
||||
return false;
|
||||
if (path == null)
|
||||
if (resourceLocation == null)
|
||||
{
|
||||
if (other.path != null)
|
||||
if (other.resourceLocation != null)
|
||||
return false;
|
||||
}
|
||||
else if (!path.equals(other.path))
|
||||
else if (!resourceLocation.equals(other.resourceLocation))
|
||||
return false;
|
||||
if (renderLeftArm != other.renderLeftArm)
|
||||
return false;
|
||||
|
|
@ -620,6 +619,100 @@ public class CarryOnOverride
|
|||
this.commandPlace = commandPlace;
|
||||
}
|
||||
|
||||
public void serialize(PacketBuffer buf)
|
||||
{
|
||||
// BLOCKS
|
||||
buf.writeCompoundTag(typeBlockTag);
|
||||
buf.writeString(typeNameBlock);
|
||||
buf.writeString(typeMaterial);
|
||||
buf.writeString(typeHardness);
|
||||
buf.writeString(typeResistance);
|
||||
|
||||
// ENTITIES
|
||||
buf.writeCompoundTag(typeEntityTag);
|
||||
buf.writeString(typeNameEntity);
|
||||
buf.writeString(typeHeight);
|
||||
buf.writeString(typeWidth);
|
||||
buf.writeString(typeHealth);
|
||||
|
||||
// CONDITIONS
|
||||
buf.writeString(conditionGamestage);
|
||||
buf.writeString(conditionAchievement);
|
||||
buf.writeString(conditionXp);
|
||||
buf.writeString(conditionGamemode);
|
||||
buf.writeString(conditionScoreboard);
|
||||
buf.writeString(conditionPosition);
|
||||
buf.writeString(conditionEffects);
|
||||
|
||||
// RENDER
|
||||
buf.writeString(renderNameBlock);
|
||||
buf.writeString(renderNameEntity);
|
||||
buf.writeCompoundTag(renderNBT);
|
||||
buf.writeString(renderTranslation);
|
||||
buf.writeString(renderRotation);
|
||||
buf.writeString(renderscaled);
|
||||
buf.writeString(renderRotationLeftArm);
|
||||
buf.writeString(renderRotationRightArm);
|
||||
buf.writeBoolean(renderLeftArm);
|
||||
buf.writeBoolean(renderRightArm);
|
||||
|
||||
//EFFECTS
|
||||
buf.writeString(commandInit);
|
||||
buf.writeString(commandLoop);
|
||||
buf.writeString(commandPlace);
|
||||
|
||||
buf.writeBoolean(isBlock);
|
||||
buf.writeBoolean(isEntity);
|
||||
buf.writeString(resourceLocation);
|
||||
}
|
||||
|
||||
public static CarryOnOverride deserialize(PacketBuffer buf)
|
||||
{
|
||||
CarryOnOverride override = new CarryOnOverride("");
|
||||
override.typeBlockTag = buf.readCompoundTag();
|
||||
override.typeNameBlock = buf.readString();
|
||||
override.typeMaterial = buf.readString();
|
||||
override.typeHardness = buf.readString();
|
||||
override.typeResistance = buf.readString();
|
||||
|
||||
// ENTITIES
|
||||
override.typeEntityTag = buf.readCompoundTag();
|
||||
override.typeNameEntity = buf.readString();
|
||||
override.typeHeight = buf.readString();
|
||||
override.typeWidth = buf.readString();
|
||||
override.typeHealth = buf.readString();
|
||||
|
||||
// CONDITIONS
|
||||
override.conditionGamestage = buf.readString();
|
||||
override.conditionAchievement = buf.readString();
|
||||
override.conditionXp = buf.readString();
|
||||
override.conditionGamemode = buf.readString();
|
||||
override.conditionScoreboard = buf.readString();
|
||||
override.conditionPosition = buf.readString();
|
||||
override.conditionEffects = buf.readString();
|
||||
|
||||
// RENDER
|
||||
override.renderNameBlock = buf.readString();
|
||||
override.renderNameEntity = buf.readString();
|
||||
override.renderNBT = buf.readCompoundTag();
|
||||
override.renderTranslation = buf.readString();
|
||||
override.renderRotation = buf.readString();
|
||||
override.renderscaled = buf.readString();
|
||||
override.renderRotationLeftArm = buf.readString();
|
||||
override.renderRotationRightArm = buf.readString();
|
||||
override.renderLeftArm = buf.readBoolean();
|
||||
override.renderRightArm = buf.readBoolean();
|
||||
|
||||
//EFFECTS
|
||||
override.commandInit = buf.readString();
|
||||
override.commandLoop = buf.readString();
|
||||
override.commandPlace = buf.readString();
|
||||
|
||||
override.isBlock = buf.readBoolean();
|
||||
override.isEntity = buf.readBoolean();
|
||||
override.resourceLocation = buf.readString();
|
||||
|
||||
return override;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
package tschipp.carryon.common.scripting;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import net.minecraft.client.resources.JsonReloadListener;
|
||||
import net.minecraft.profiler.IProfiler;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
|
||||
import net.minecraftforge.fml.common.thread.EffectiveSide;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
import net.minecraftforge.fml.server.ServerLifecycleHooks;
|
||||
import tschipp.carryon.CarryOn;
|
||||
import tschipp.carryon.network.client.ScriptReloadPacket;
|
||||
|
||||
@EventBusSubscriber(modid = CarryOn.MODID, bus = Bus.FORGE)
|
||||
public class ScriptReloadListener extends JsonReloadListener
|
||||
{
|
||||
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create();
|
||||
|
||||
public ScriptReloadListener()
|
||||
{
|
||||
super(GSON, "carryon/scripts");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void apply(Map<ResourceLocation, JsonObject> objects, IResourceManager manager, IProfiler profiler)
|
||||
{
|
||||
ScriptReader.OVERRIDES.clear();
|
||||
|
||||
objects.forEach((path, jsonObj) -> {
|
||||
CarryOnOverride override = GSON.fromJson(jsonObj, CarryOnOverride.class);
|
||||
ScriptReader.OVERRIDES.put(override.hashCode(), override);
|
||||
});
|
||||
|
||||
if (EffectiveSide.get().isServer() && ServerLifecycleHooks.getCurrentServer() != null)
|
||||
{
|
||||
CarryOn.network.send(PacketDistributor.ALL.noArg(), new ScriptReloadPacket(ScriptReader.OVERRIDES.values()));
|
||||
}
|
||||
}
|
||||
|
||||
public static void onDatapackRegister(AddReloadListenerEvent event)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,39 +1,58 @@
|
|||
package tschipp.carryon.network.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fml.network.NetworkEvent;
|
||||
import tschipp.carryon.CarryOn;
|
||||
import tschipp.carryon.common.scripting.CarryOnOverride;
|
||||
import tschipp.carryon.common.scripting.ScriptReader;
|
||||
|
||||
public class ScriptReloadPacket
|
||||
{
|
||||
private List<CarryOnOverride> overrides = new ArrayList<CarryOnOverride>();
|
||||
|
||||
public ScriptReloadPacket()
|
||||
{
|
||||
}
|
||||
|
||||
public ScriptReloadPacket(ByteBuf buf)
|
||||
|
||||
public ScriptReloadPacket(Collection<CarryOnOverride> collection)
|
||||
{
|
||||
overrides.addAll(collection);
|
||||
}
|
||||
|
||||
public void toBytes(ByteBuf buf)
|
||||
public ScriptReloadPacket(PacketBuffer buf)
|
||||
{
|
||||
int size = buf.readInt();
|
||||
for(int i = 0; i < size; i++)
|
||||
{
|
||||
overrides.add(CarryOnOverride.deserialize(buf));
|
||||
}
|
||||
}
|
||||
|
||||
public void toBytes(PacketBuffer buf)
|
||||
{
|
||||
buf.writeInt(overrides.size());
|
||||
overrides.forEach(override -> override.serialize(buf));
|
||||
}
|
||||
|
||||
public void handle(Supplier<NetworkEvent.Context> ctx)
|
||||
{
|
||||
ctx.get().enqueueWork(() -> {
|
||||
if (ctx.get().getDirection().getReceptionSide().isClient())
|
||||
{
|
||||
ctx.get().enqueueWork(() -> {
|
||||
|
||||
PlayerEntity player = CarryOn.proxy.getPlayer();
|
||||
ScriptReader.OVERRIDES.clear();
|
||||
|
||||
overrides.forEach(override -> {
|
||||
ScriptReader.OVERRIDES.put(override.hashCode(), override);
|
||||
});
|
||||
|
||||
if (player != null)
|
||||
ScriptReader.reloadScripts();
|
||||
|
||||
ctx.get().setPacketHandled(true);
|
||||
});
|
||||
ctx.get().setPacketHandled(true);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user