obsidian cube and ender update
@@ -6,7 +6,7 @@ minecraft_version=1.20.1
|
|||||||
yarn_mappings=1.20.1+build.10
|
yarn_mappings=1.20.1+build.10
|
||||||
loader_version=0.18.3
|
loader_version=0.18.3
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=26.4.1-downside-up
|
mod_version=26.4.13
|
||||||
maven_group=dev.tggamesyt
|
maven_group=dev.tggamesyt
|
||||||
archives_base_name=szar
|
archives_base_name=szar
|
||||||
# Dependencies
|
# 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");
|
public static final Identifier MOJANG_CAPES_SYNC = new Identifier(Szar.MOD_ID, "mojang_capes_sync");
|
||||||
|
|
||||||
private static final String CAPES_URL =
|
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 =
|
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<String, String> CAPES = new HashMap<>();
|
||||||
public static final Map<UUID, UserCosmetics> USERS = new HashMap<>();
|
public static final Map<UUID, UserCosmetics> USERS = new HashMap<>();
|
||||||
@@ -112,7 +112,7 @@ public class ServerCosmetics {
|
|||||||
USERS.put(uuid, user);
|
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) {
|
} catch (Exception e) {
|
||||||
Szar.LOGGER.error("Failed loading cosmetics", e);
|
Szar.LOGGER.error("Failed loading cosmetics", e);
|
||||||
|
|||||||
@@ -1785,7 +1785,19 @@ public class Szar implements ModInitializer {
|
|||||||
new Identifier(MOD_ID, "island_piece"),
|
new Identifier(MOD_ID, "island_piece"),
|
||||||
IslandStructurePiece::new
|
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 =
|
public static final StructureType<IslandStructure> ISLAND_TYPE =
|
||||||
Registry.register(
|
Registry.register(
|
||||||
Registries.STRUCTURE_TYPE,
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||