obsidian cube and ender update
@@ -6,7 +6,7 @@ minecraft_version=1.20.1
|
||||
yarn_mappings=1.20.1+build.10
|
||||
loader_version=0.18.3
|
||||
# Mod Properties
|
||||
mod_version=26.4.1-downside-up
|
||||
mod_version=26.4.13
|
||||
maven_group=dev.tggamesyt
|
||||
archives_base_name=szar
|
||||
# Dependencies
|
||||
|
||||
65
src/main/java/dev/tggamesyt/szar/ObsidianCubeStructure.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package dev.tggamesyt.szar;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import net.minecraft.structure.StructurePlacementData;
|
||||
import net.minecraft.util.BlockRotation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.ChunkPos;
|
||||
import net.minecraft.world.Heightmap;
|
||||
import net.minecraft.world.gen.structure.Structure;
|
||||
import net.minecraft.world.gen.structure.StructureType;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ObsidianCubeStructure extends Structure {
|
||||
|
||||
public static final Codec<ObsidianCubeStructure> CODEC =
|
||||
Structure.createCodec(ObsidianCubeStructure::new);
|
||||
|
||||
public ObsidianCubeStructure(Config config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Optional<StructurePosition> getStructurePosition(Context context) {
|
||||
return Structure.getStructurePosition(
|
||||
context,
|
||||
Heightmap.Type.WORLD_SURFACE_WG,
|
||||
collector -> {
|
||||
|
||||
ChunkPos chunkPos = context.chunkPos();
|
||||
int x = chunkPos.getCenterX();
|
||||
int z = chunkPos.getCenterZ();
|
||||
|
||||
int y = context.chunkGenerator().getHeightInGround(
|
||||
x, z,
|
||||
Heightmap.Type.WORLD_SURFACE_WG,
|
||||
context.world(),
|
||||
context.noiseConfig()
|
||||
);
|
||||
|
||||
BlockPos pos = new BlockPos(x, y, z);
|
||||
|
||||
StructurePlacementData placement =
|
||||
new StructurePlacementData()
|
||||
.setRotation(
|
||||
BlockRotation.random(context.random())
|
||||
);
|
||||
|
||||
collector.addPiece(
|
||||
new ObsidianCubeStructurePiece(
|
||||
context,
|
||||
pos,
|
||||
BlockPos.ORIGIN,
|
||||
placement
|
||||
)
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StructureType<?> getType() {
|
||||
return Szar.OBSIDIAN_CUBE_TYPE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package dev.tggamesyt.szar;
|
||||
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.structure.SimpleStructurePiece;
|
||||
import net.minecraft.structure.StructureContext;
|
||||
import net.minecraft.structure.StructurePlacementData;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockBox;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.random.Random;
|
||||
import net.minecraft.world.ServerWorldAccess;
|
||||
import net.minecraft.world.gen.structure.Structure;
|
||||
|
||||
public class ObsidianCubeStructurePiece extends SimpleStructurePiece {
|
||||
|
||||
private static final Identifier TEMPLATE_ID =
|
||||
new Identifier(Szar.MOD_ID, "obsidian_cube");
|
||||
|
||||
/* ===== NORMAL CONSTRUCTOR ===== */
|
||||
public ObsidianCubeStructurePiece(
|
||||
Structure.Context context,
|
||||
BlockPos pos,
|
||||
BlockPos origin,
|
||||
StructurePlacementData placement
|
||||
) {
|
||||
super(
|
||||
Szar.OBSIDIAN_CUBE_PIECE,
|
||||
0,
|
||||
context.structureTemplateManager(),
|
||||
TEMPLATE_ID,
|
||||
TEMPLATE_ID.toString(),
|
||||
placement,
|
||||
pos
|
||||
);
|
||||
}
|
||||
|
||||
/* ===== NBT CONSTRUCTOR ===== */
|
||||
public ObsidianCubeStructurePiece(StructureContext context, NbtCompound nbt) {
|
||||
super(
|
||||
Szar.OBSIDIAN_CUBE_PIECE,
|
||||
nbt,
|
||||
context.structureTemplateManager(),
|
||||
identifier -> new StructurePlacementData()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleMetadata(String metadata, BlockPos pos, ServerWorldAccess world, Random random, BlockBox boundingBox) {}
|
||||
}
|
||||
@@ -23,10 +23,10 @@ public class ServerCosmetics {
|
||||
public static final Identifier MOJANG_CAPES_SYNC = new Identifier(Szar.MOD_ID, "mojang_capes_sync");
|
||||
|
||||
private static final String CAPES_URL =
|
||||
"https://raw.githubusercontent.com/tggamesyt/szar/main/capes.json";
|
||||
"https://gitea.tggamesyt.dev/tggamesyt/szar/raw/main/capes.json";
|
||||
|
||||
private static final String USERS_URL =
|
||||
"https://raw.githubusercontent.com/tggamesyt/szar/main/usercosmetics.json";
|
||||
"https://gitea.tggamesyt.dev/tggamesyt/szar/raw/main/usercosmetics.json";
|
||||
|
||||
public static final Map<String, String> CAPES = new HashMap<>();
|
||||
public static final Map<UUID, UserCosmetics> USERS = new HashMap<>();
|
||||
@@ -112,7 +112,7 @@ public class ServerCosmetics {
|
||||
USERS.put(uuid, user);
|
||||
}
|
||||
|
||||
Szar.LOGGER.info("Loaded server capes & user cosmetics from GitHub");
|
||||
Szar.LOGGER.info("Loaded server capes & user cosmetics from Gitea");
|
||||
|
||||
} catch (Exception e) {
|
||||
Szar.LOGGER.error("Failed loading cosmetics", e);
|
||||
|
||||
@@ -1785,7 +1785,19 @@ public class Szar implements ModInitializer {
|
||||
new Identifier(MOD_ID, "island_piece"),
|
||||
IslandStructurePiece::new
|
||||
);
|
||||
public static final StructurePieceType OBSIDIAN_CUBE_PIECE =
|
||||
Registry.register(
|
||||
Registries.STRUCTURE_PIECE,
|
||||
new Identifier(MOD_ID, "obsidian_cube_piece"),
|
||||
ObsidianCubeStructurePiece::new
|
||||
);
|
||||
|
||||
public static final StructureType<ObsidianCubeStructure> OBSIDIAN_CUBE_TYPE =
|
||||
Registry.register(
|
||||
Registries.STRUCTURE_TYPE,
|
||||
new Identifier(MOD_ID, "obsidian_cube"),
|
||||
() -> ObsidianCubeStructure.CODEC
|
||||
);
|
||||
public static final StructureType<IslandStructure> ISLAND_TYPE =
|
||||
Registry.register(
|
||||
Registries.STRUCTURE_TYPE,
|
||||
|
||||
|
Before Width: | Height: | Size: 581 B After Width: | Height: | Size: 572 B |
|
Before Width: | Height: | Size: 489 B After Width: | Height: | Size: 740 B |
|
Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 359 B |
BIN
src/main/resources/data/szar/structures/obsidian_cube.nbt
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"type": "szar:obsidian_cube",
|
||||
"biomes": "szar:chorus_forest",
|
||||
"step": "surface_structures",
|
||||
"terrain_adaptation": "none",
|
||||
"spawn_overrides": {},
|
||||
"config": {}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"structures": [
|
||||
{
|
||||
"structure": "szar:obsidian_cube",
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"placement": {
|
||||
"type": "minecraft:random_spread",
|
||||
"spacing": 20,
|
||||
"separation": 10,
|
||||
"salt": 398826349
|
||||
}
|
||||
}
|
||||