mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Merge pull request #763 from VolmitSoftware/Development
Development Changes (WIP)
This commit is contained in:
commit
851954efb2
@ -70,6 +70,10 @@ public class IrisDimension extends IrisRegistrant {
|
|||||||
@Required
|
@Required
|
||||||
@Desc("The human readable name of this dimension")
|
@Desc("The human readable name of this dimension")
|
||||||
private String name = "A Dimension";
|
private String name = "A Dimension";
|
||||||
|
@MinNumber(1)
|
||||||
|
@MaxNumber(2032)
|
||||||
|
@Desc("Maximum height at which players can be teleported to through gameplay.")
|
||||||
|
private int logicalHeight = 256;
|
||||||
@RegistryListResource(IrisJigsawStructure.class)
|
@RegistryListResource(IrisJigsawStructure.class)
|
||||||
@Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.")
|
@Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.")
|
||||||
private String stronghold;
|
private String stronghold;
|
||||||
@ -238,13 +242,11 @@ public class IrisDimension extends IrisRegistrant {
|
|||||||
private int caveLavaHeight = 8;
|
private int caveLavaHeight = 8;
|
||||||
|
|
||||||
public int getMaxHeight() {
|
public int getMaxHeight() {
|
||||||
return 320;
|
return (int) getDimensionHeight().getMax();
|
||||||
// return (int) getDimensionHeight().getMax();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMinHeight() {
|
public int getMinHeight() {
|
||||||
return -64;
|
return (int) getDimensionHeight().getMin();
|
||||||
// return (int) getDimensionHeight().getMin();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockData generateOres(int x, int y, int z, RNG rng, IrisData data) {
|
public BlockData generateOres(int x, int y, int z, RNG rng, IrisData data) {
|
||||||
@ -282,6 +284,10 @@ public class IrisDimension extends IrisRegistrant {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getFluidHeight() {
|
||||||
|
return fluidHeight - (int)dimensionHeight.getMin();
|
||||||
|
}
|
||||||
|
|
||||||
public CNG getCoordFracture(RNG rng, int signature) {
|
public CNG getCoordFracture(RNG rng, int signature) {
|
||||||
return coordFracture.aquire(() ->
|
return coordFracture.aquire(() ->
|
||||||
{
|
{
|
||||||
@ -399,6 +405,21 @@ public class IrisDimension extends IrisRegistrant {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!dimensionHeight.equals(new IrisRange(-64, 320))) {
|
||||||
|
File dimType = new File(datapacks, "iris/data/minecraft/dimension_type/" + getLoadKey().toLowerCase() + ".json");
|
||||||
|
if(!dimType.exists())
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
Iris.verbose(" Installing Data Pack Dimension Type: " + dimType.getPath());
|
||||||
|
dimType.getParentFile().mkdirs();
|
||||||
|
try {
|
||||||
|
IO.writeAll(dimType, generateDatapackJson());
|
||||||
|
} catch(IOException e) {
|
||||||
|
Iris.reportError(e);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(write) {
|
if(write) {
|
||||||
File mcm = new File(datapacks, "iris/pack.mcmeta");
|
File mcm = new File(datapacks, "iris/pack.mcmeta");
|
||||||
try {
|
try {
|
||||||
@ -434,4 +455,30 @@ public class IrisDimension extends IrisRegistrant {
|
|||||||
public void scanForErrors(JSONObject p, VolmitSender sender) {
|
public void scanForErrors(JSONObject p, VolmitSender sender) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String generateDatapackJson() {
|
||||||
|
JSONObject obj = new JSONObject(DP_OVERWORLD_DEFAULT);
|
||||||
|
obj.put("min_y", dimensionHeight.getMin());
|
||||||
|
obj.put("height", dimensionHeight.getMax() - dimensionHeight.getMin());
|
||||||
|
obj.put("logical_height", logicalHeight);
|
||||||
|
return obj.toString(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String DP_OVERWORLD_DEFAULT = """
|
||||||
|
{
|
||||||
|
"name": "minecraft:overworld",
|
||||||
|
"ultrawarm": false,
|
||||||
|
"natural": true,
|
||||||
|
"coordinate_scale": 1.0,
|
||||||
|
"has_skylight": true,
|
||||||
|
"has_ceiling": false,
|
||||||
|
"ambient_light": 0,
|
||||||
|
"fixed_time": false,
|
||||||
|
"piglin_safe": false,
|
||||||
|
"bed_works": true,
|
||||||
|
"respawn_anchor_works": false,
|
||||||
|
"has_raids": true,
|
||||||
|
"infiniburn": "infiniburn_overworld",
|
||||||
|
"effects": "minecraft:overworld"
|
||||||
|
}""";
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.ArrayType;
|
import com.volmit.iris.engine.object.annotations.ArrayType;
|
||||||
@ -28,17 +29,25 @@ import com.volmit.iris.engine.object.annotations.RegistryListItemType;
|
|||||||
import com.volmit.iris.engine.object.annotations.Required;
|
import com.volmit.iris.engine.object.annotations.Required;
|
||||||
import com.volmit.iris.engine.object.annotations.Snippet;
|
import com.volmit.iris.engine.object.annotations.Snippet;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.data.B;
|
import com.volmit.iris.util.data.B;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
|
import com.volmit.iris.util.nbt.io.NBTUtil;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.nbt.NbtUtils;
|
||||||
|
import net.minecraft.nbt.TagParser;
|
||||||
|
import net.minecraft.server.commands.GiveCommand;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.Damageable;
|
import org.bukkit.inventory.meta.Damageable;
|
||||||
@ -102,6 +111,8 @@ public class IrisLoot {
|
|||||||
private DyeColor dyeColor = null;
|
private DyeColor dyeColor = null;
|
||||||
@Desc("The leather armor color")
|
@Desc("The leather armor color")
|
||||||
private String leatherColor = null;
|
private String leatherColor = null;
|
||||||
|
@Desc("Defines a custom NBT Tag for the item.")
|
||||||
|
private KMap<String, Object> customNbt;
|
||||||
|
|
||||||
public Material getType() {
|
public Material getType() {
|
||||||
return B.getMaterial(type);
|
return B.getMaterial(type);
|
||||||
@ -173,7 +184,7 @@ public class IrisLoot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
is.setItemMeta(m);
|
is.setItemMeta(m);
|
||||||
return is;
|
return applyCustomNbt(is);
|
||||||
} catch(Throwable e) {
|
} catch(Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
|
|
||||||
@ -250,13 +261,23 @@ public class IrisLoot {
|
|||||||
|
|
||||||
m.setLore(lore);
|
m.setLore(lore);
|
||||||
is.setItemMeta(m);
|
is.setItemMeta(m);
|
||||||
return is;
|
return applyCustomNbt(is);
|
||||||
} catch(Throwable e) {
|
} catch(Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ItemStack applyCustomNbt(ItemStack stack) throws CommandSyntaxException {
|
||||||
|
if(customNbt == null || customNbt.isEmpty())
|
||||||
|
return stack;
|
||||||
|
net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(stack);
|
||||||
|
CompoundTag tag = TagParser.parseTag(new JSONObject(customNbt).toString());
|
||||||
|
tag.merge(s.getOrCreateTag());
|
||||||
|
s.setTag(tag);
|
||||||
|
System.out.println(customNbt);
|
||||||
|
return CraftItemStack.asBukkitCopy(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user