use of ivorius.reccomplex.world.gen.feature.structure.generic.GenericStructure in project RecurrentComplex by Ivorforce.
the class OperationRegistry method dummyOperation.
@Nullable
public static NBTTagCompound dummyOperation(@Nonnull Operation operation, int level) {
if (level == 0)
return writeOperation(operation);
if (operation instanceof OperationGenerateStructure) {
OperationGenerateStructure genStructure = (OperationGenerateStructure) operation;
if (level == 1 && genStructure.structure != null) {
IvWorldData dummyWorldData = genStructure.structure.constructWorldData();
dummyWorldData.entities.clear();
dummyWorldData.tileEntities.clear();
for (BlockPos pos : dummyWorldData.blockCollection.area()) dummyWorldData.blockCollection.setBlockState(pos, (dummyWorldData.blockCollection.getBlockState(pos).isNormalCube() ? Blocks.STONE : Blocks.AIR).getDefaultState());
GenericStructure dummyStructure = new GenericStructure();
dummyStructure.worldDataCompound = dummyWorldData.createTagCompound();
return writeOperation(genStructure.dummy(dummyStructure));
} else if (level == 2)
return writeOperation(new OperationClearArea(genStructure.generationArea()));
}
return null;
}
use of ivorius.reccomplex.world.gen.feature.structure.generic.GenericStructure in project RecurrentComplex by Ivorforce.
the class RCParameter method genericStructure.
public Result<GenericStructure> genericStructure() {
return first().map(id -> {
Structure structure = StructureRegistry.INSTANCE.get(id);
if (structure == null)
throw ServerTranslations.commandException("commands.structure.notRegistered", id);
GenericStructure genericStructureInfo = structure.copyAsGenericStructure();
if (genericStructureInfo == null)
throw ServerTranslations.commandException("commands.structure.notGeneric", id);
return genericStructureInfo;
});
}
use of ivorius.reccomplex.world.gen.feature.structure.generic.GenericStructure in project RecurrentComplex by Ivorforce.
the class PacketEditStructureHandler method openEditStructure.
public static void openEditStructure(GenericStructure structureInfo, String structureID, EntityPlayerMP player) {
if (structureID == null)
structureID = "NewStructure";
RCEntityInfo entityInfo = RCEntityInfo.get(player, null);
if (entityInfo != null)
entityInfo.setCachedExportStructureBlockDataNBT(structureInfo.worldDataCompound);
SimpleLeveledRegistry<Structure<?>>.Status<Structure<?>> status = StructureRegistry.INSTANCE.status(structureID);
RecurrentComplex.network.sendTo(new PacketEditStructure(structureInfo, structureID, SaveDirectoryData.defaultData(structureID, status != null && status.isActive(), RecurrentComplex.loader.tryFindIDs(ResourceDirectory.ACTIVE.toPath(), RCFileSuffix.STRUCTURE), RecurrentComplex.loader.tryFindIDs(ResourceDirectory.INACTIVE.toPath(), RCFileSuffix.STRUCTURE))), player);
}
use of ivorius.reccomplex.world.gen.feature.structure.generic.GenericStructure in project RecurrentComplex by Ivorforce.
the class PacketSaveStructureHandler method processServer.
@Override
public void processServer(PacketSaveStructure message, MessageContext ctx, WorldServer server) {
NetHandlerPlayServer netHandlerPlayServer = ctx.getServerHandler();
EntityPlayerMP player = netHandlerPlayServer.player;
if (RecurrentComplex.checkPerms(player))
return;
RCEntityInfo entityInfo = RCEntityInfo.get(player, null);
GenericStructure genericStructureInfo = message.getStructureInfo();
if (entityInfo != null)
genericStructureInfo.worldDataCompound = entityInfo.getCachedExportStructureBlockDataNBT();
SaveDirectoryData.Result saveDirectoryDataResult = message.getSaveDirectoryDataResult();
String id = message.getStructureID();
ResourceDirectory saveDir = saveDirectoryDataResult.directory;
write(player, genericStructureInfo, id, saveDir, saveDirectoryDataResult.deleteOther, true);
}
use of ivorius.reccomplex.world.gen.feature.structure.generic.GenericStructure in project RecurrentComplex by Ivorforce.
the class PacketWorldDataHandler method processServer.
@Override
public void processServer(PacketWorldData message, MessageContext ctx, WorldServer world) {
BlockPos origin = message.source;
BlockArea area = new BlockArea(message.capturePoint1.add(origin), message.capturePoint2.add(origin));
// Send captured back
IvWorldData worldData = IvWorldData.capture(world, area, true);
// Unsupported because of recursion and TE scripts not working anyway
worldData.tileEntities.removeIf(te -> TileEntity.create(world, te) instanceof TileEntityBlockScript);
PacketWorldData packet = new PacketWorldData(worldData.createTagCompound(), origin, message.capturePoint1, message.capturePoint2);
RecurrentComplex.network.sendTo(packet, ctx.getServerHandler().player);
if (message.worldData != null) {
GenericStructure structure = new GenericStructure();
structure.worldDataCompound = message.worldData;
new StructureGenerator<>(structure).world(world).lowerCoord(message.capturePoint1.add(origin)).generationPredicate(p -> !p.equals(origin)).generate();
}
}
Aggregations