mirror of
https://github.com/TeamMidnightDust/ThisRocks.git
synced 2025-12-17 11:25:10 +01:00
Compare commits
9 Commits
dev/geyser
...
1.21.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95488b91af | ||
|
|
c1bb88702d | ||
|
|
1d179f7310 | ||
|
|
9d770a64dd | ||
|
|
e48f37c269 | ||
|
|
198a19ce2d | ||
|
|
24cdf96548 | ||
|
|
aee6a68c7b | ||
|
|
395bbfc92c |
@@ -27,9 +27,6 @@ repositories {
|
|||||||
url = "https://api.modrinth.com/maven"
|
url = "https://api.modrinth.com/maven"
|
||||||
}
|
}
|
||||||
maven { url 'https://maven.nucleoid.xyz' }
|
maven { url 'https://maven.nucleoid.xyz' }
|
||||||
maven {
|
|
||||||
url = uri("https://repo.opencollab.dev/main/")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -50,7 +47,6 @@ dependencies {
|
|||||||
modImplementation ("eu.pb4:polymer-virtual-entity:${polymer_version}")
|
modImplementation ("eu.pb4:polymer-virtual-entity:${polymer_version}")
|
||||||
modImplementation ("eu.pb4:polymer-autohost:${polymer_version}")
|
modImplementation ("eu.pb4:polymer-autohost:${polymer_version}")
|
||||||
modImplementation ("eu.pb4:factorytools:${factorytools_version}")
|
modImplementation ("eu.pb4:factorytools:${factorytools_version}")
|
||||||
compileOnly('org.geysermc.geyser:api:2.4.2-SNAPSHOT')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx2G
|
|||||||
loader_version=0.16.9
|
loader_version=0.16.9
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.9.1
|
mod_version = 1.9.3
|
||||||
maven_group = eu.midnightdust.motschen
|
maven_group = eu.midnightdust.motschen
|
||||||
archives_base_name = rocks
|
archives_base_name = rocks
|
||||||
release_type=release
|
release_type=release
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"item.rocks.bamboo_stick": "Bambusstock",
|
"item.rocks.bamboo_stick": "Bambusstock",
|
||||||
"item.rocks.birch_stick": "Birkenstock",
|
"item.rocks.birch_stick": "Birkenstock",
|
||||||
"item.rocks.cherry_stick": "Kirschstock",
|
"item.rocks.cherry_stick": "Kirschstock",
|
||||||
"item.rocks.cobblestone_splitter": "Steinsplitter",
|
"item.rocks.cobblestone_splitter": "Bruchsteinsplitter",
|
||||||
"item.rocks.crimson_stick": "Karmesinstock",
|
"item.rocks.crimson_stick": "Karmesinstock",
|
||||||
"item.rocks.dark_oak_stick": "Schwarzeichenstock",
|
"item.rocks.dark_oak_stick": "Schwarzeichenstock",
|
||||||
"item.rocks.diorite_rock": "Dioritbrocken",
|
"item.rocks.diorite_rock": "Dioritbrocken",
|
||||||
@@ -74,6 +74,8 @@
|
|||||||
"rocks.midnightconfig.category.sticks": "Stöcke",
|
"rocks.midnightconfig.category.sticks": "Stöcke",
|
||||||
"rocks.midnightconfig.enablePolymerMode": "Aktiviere Polymer-Modus",
|
"rocks.midnightconfig.enablePolymerMode": "Aktiviere Polymer-Modus",
|
||||||
"rocks.midnightconfig.enablePolymerMode.tooltip": "Erlaubt der Mod, komplett serverseitig zu funktionieren, wenn Polymer und FactoryTools installiert sind",
|
"rocks.midnightconfig.enablePolymerMode.tooltip": "Erlaubt der Mod, komplett serverseitig zu funktionieren, wenn Polymer und FactoryTools installiert sind",
|
||||||
|
"rocks.midnightconfig.forcePolymerMode": "Erzwinge Polymer-Modus",
|
||||||
|
"rocks.midnightconfig.forcePolymerMode.tooltip": "Aktiviert den Polymer-Modus auch für Clients, die die ThisRocks! installiert haben",
|
||||||
"rocks.midnightconfig.geyserLevitation": "Geysir Schwebeeffekt",
|
"rocks.midnightconfig.geyserLevitation": "Geysir Schwebeeffekt",
|
||||||
"rocks.midnightconfig.needs_restart": "§cStarte das Spiel neu, nachdem du Änderungen vorgenommen hast!",
|
"rocks.midnightconfig.needs_restart": "§cStarte das Spiel neu, nachdem du Änderungen vorgenommen hast!",
|
||||||
"rocks.midnightconfig.needs_restart1": "§cStarte das Spiel neu, nachdem du Änderungen vorgenommen hast!",
|
"rocks.midnightconfig.needs_restart1": "§cStarte das Spiel neu, nachdem du Änderungen vorgenommen hast!",
|
||||||
|
|||||||
@@ -29,39 +29,39 @@
|
|||||||
"block.rocks.warped_stick": "Warped Stick",
|
"block.rocks.warped_stick": "Warped Stick",
|
||||||
"item.rocks.acacia_stick": "Acacia Stick",
|
"item.rocks.acacia_stick": "Acacia Stick",
|
||||||
"item.rocks.andesite_rock": "Andesite Rock",
|
"item.rocks.andesite_rock": "Andesite Rock",
|
||||||
"item.rocks.andesite_splitter": "Andesite Splitter",
|
"item.rocks.andesite_splitter": "Andesite Fragment",
|
||||||
"item.rocks.bamboo_stick": "Bamboo Stick",
|
"item.rocks.bamboo_stick": "Bamboo Stick",
|
||||||
"item.rocks.birch_stick": "Birch Stick",
|
"item.rocks.birch_stick": "Birch Stick",
|
||||||
"item.rocks.cherry_stick": "Cherry Stick",
|
"item.rocks.cherry_stick": "Cherry Stick",
|
||||||
"item.rocks.cobblestone_splitter": "Stone Splitter",
|
"item.rocks.cobblestone_splitter": "Cobblestone Fragment",
|
||||||
"item.rocks.crimson_stick": "Crimson Stick",
|
"item.rocks.crimson_stick": "Crimson Stick",
|
||||||
"item.rocks.dark_oak_stick": "Dark Oak Stick",
|
"item.rocks.dark_oak_stick": "Dark Oak Stick",
|
||||||
"item.rocks.diorite_rock": "Diorite Rock",
|
"item.rocks.diorite_rock": "Diorite Rock",
|
||||||
"item.rocks.diorite_splitter": "Diorite Splitter",
|
"item.rocks.diorite_splitter": "Diorite Fragment",
|
||||||
"item.rocks.end_stone_rock": "End Stone Rock",
|
"item.rocks.end_stone_rock": "End Stone Rock",
|
||||||
"item.rocks.end_stone_splitter": "End Stone Splitter",
|
"item.rocks.end_stone_splitter": "End Stone Fragment",
|
||||||
"item.rocks.geyser": "Geyser",
|
"item.rocks.geyser": "Geyser",
|
||||||
"item.rocks.granite_rock": "Granite Rock",
|
"item.rocks.granite_rock": "Granite Rock",
|
||||||
"item.rocks.granite_splitter": "Granite Splitter",
|
"item.rocks.granite_splitter": "Granite Fragment",
|
||||||
"item.rocks.gravel_rock": "Gravel Rock",
|
"item.rocks.gravel_rock": "Gravel Rock",
|
||||||
"item.rocks.ice_rock": "Ice Rock",
|
"item.rocks.ice_rock": "Ice Rock",
|
||||||
"item.rocks.ice_splitter": "Ice Splitter",
|
"item.rocks.ice_splitter": "Ice Fragment",
|
||||||
"item.rocks.jungle_stick": "Jungle Stick",
|
"item.rocks.jungle_stick": "Jungle Stick",
|
||||||
"item.rocks.mangrove_stick": "Mangrove Stick",
|
"item.rocks.mangrove_stick": "Mangrove Stick",
|
||||||
"item.rocks.nether_geyser": "Nether Geyser",
|
"item.rocks.nether_geyser": "Nether Geyser",
|
||||||
"item.rocks.netherrack_rock": "Netherrack Rock",
|
"item.rocks.netherrack_rock": "Netherrack Rock",
|
||||||
"item.rocks.netherrack_splitter": "Netherrack Splitter",
|
"item.rocks.netherrack_splitter": "Netherrack Fragment",
|
||||||
"item.rocks.oak_stick": "Oak Stick",
|
"item.rocks.oak_stick": "Oak Stick",
|
||||||
"item.rocks.pale_oak_stick": "Pale Oak Stick",
|
"item.rocks.pale_oak_stick": "Pale Oak Stick",
|
||||||
"item.rocks.pinecone": "Pinecone",
|
"item.rocks.pinecone": "Pinecone",
|
||||||
"item.rocks.red_sand_rock": "Red Sandstone Rock",
|
"item.rocks.red_sand_rock": "Red Sandstone Rock",
|
||||||
"item.rocks.red_sandstone_splitter": "Red Sandstone Splitter",
|
"item.rocks.red_sandstone_splitter": "Red Sandstone Fragment",
|
||||||
"item.rocks.rock": "Stone Rock",
|
"item.rocks.rock": "Stone Rock",
|
||||||
"item.rocks.sand_rock": "Sandstone Rock",
|
"item.rocks.sand_rock": "Sandstone Rock",
|
||||||
"item.rocks.sandstone_splitter": "Sandstone Splitter",
|
"item.rocks.sandstone_splitter": "Sandstone Fragment",
|
||||||
"item.rocks.seashell": "Seashell",
|
"item.rocks.seashell": "Seashell",
|
||||||
"item.rocks.soul_soil_rock": "Soul Soil Rock",
|
"item.rocks.soul_soil_rock": "Soul Soil Rock",
|
||||||
"item.rocks.soul_soil_splitter": "Soul Soil Splitter",
|
"item.rocks.soul_soil_splitter": "Soul Soil Fragment",
|
||||||
"item.rocks.spruce_stick": "Spruce Stick",
|
"item.rocks.spruce_stick": "Spruce Stick",
|
||||||
"item.rocks.starfish": "Starfish",
|
"item.rocks.starfish": "Starfish",
|
||||||
"item.rocks.warped_stick": "Warped Stick",
|
"item.rocks.warped_stick": "Warped Stick",
|
||||||
@@ -74,6 +74,8 @@
|
|||||||
"rocks.midnightconfig.category.sticks": "Sticks",
|
"rocks.midnightconfig.category.sticks": "Sticks",
|
||||||
"rocks.midnightconfig.enablePolymerMode": "Enable Polymer Mode",
|
"rocks.midnightconfig.enablePolymerMode": "Enable Polymer Mode",
|
||||||
"rocks.midnightconfig.enablePolymerMode.tooltip": "Allows the mod to work fully server-sided when used in combination with Polymer and FactoryTools",
|
"rocks.midnightconfig.enablePolymerMode.tooltip": "Allows the mod to work fully server-sided when used in combination with Polymer and FactoryTools",
|
||||||
|
"rocks.midnightconfig.forcePolymerMode": "Force Polymer Mode",
|
||||||
|
"rocks.midnightconfig.forcePolymerMode.tooltip": "Also enables Polymer mode for clients that have ThisRocks! installed",
|
||||||
"rocks.midnightconfig.geyserLevitation": "Geyser Levitation",
|
"rocks.midnightconfig.geyserLevitation": "Geyser Levitation",
|
||||||
"rocks.midnightconfig.needs_restart": "§cRestart the game after changing options here!",
|
"rocks.midnightconfig.needs_restart": "§cRestart the game after changing options here!",
|
||||||
"rocks.midnightconfig.needs_restart1": "§cRestart the game after changing options here!",
|
"rocks.midnightconfig.needs_restart1": "§cRestart the game after changing options here!",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"parent": "rocks:item/splitter_base",
|
"parent": "rocks:item/splitter_base",
|
||||||
"textures": {
|
"textures": {
|
||||||
"0": "minecraft:block/stone"
|
"0": "minecraft:block/cobblestone"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,6 @@ import eu.midnightdust.motschen.rocks.config.RocksConfig;
|
|||||||
import eu.midnightdust.motschen.rocks.networking.HelloPayload;
|
import eu.midnightdust.motschen.rocks.networking.HelloPayload;
|
||||||
import eu.midnightdust.motschen.rocks.util.RockType;
|
import eu.midnightdust.motschen.rocks.util.RockType;
|
||||||
import eu.midnightdust.motschen.rocks.util.StickType;
|
import eu.midnightdust.motschen.rocks.util.StickType;
|
||||||
import eu.midnightdust.motschen.rocks.util.geyser.GeyserUtil;
|
|
||||||
import eu.midnightdust.motschen.rocks.util.polymer.PolyUtil;
|
import eu.midnightdust.motschen.rocks.util.polymer.PolyUtil;
|
||||||
import eu.midnightdust.motschen.rocks.world.*;
|
import eu.midnightdust.motschen.rocks.world.*;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
@@ -20,7 +19,6 @@ import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
|||||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -45,7 +43,6 @@ import static eu.midnightdust.motschen.rocks.util.polymer.PolyUtil.*;
|
|||||||
public class RocksMain implements ModInitializer {
|
public class RocksMain implements ModInitializer {
|
||||||
public static final String MOD_ID = "rocks";
|
public static final String MOD_ID = "rocks";
|
||||||
public static boolean polymerMode = hasRequiredPolymerModules();
|
public static boolean polymerMode = hasRequiredPolymerModules();
|
||||||
public static boolean hasGeyserMC = PlatformFunctions.isModLoaded("geyser-fabric") || PlatformFunctions.isModLoaded("geyser-neoforge");
|
|
||||||
public static List<ServerPlayerEntity> playersWithMod = new ArrayList<>();
|
public static List<ServerPlayerEntity> playersWithMod = new ArrayList<>();
|
||||||
|
|
||||||
public static final EnumProperty<RockVariation> ROCK_VARIATION = EnumProperty.of("variation", RockVariation.class);
|
public static final EnumProperty<RockVariation> ROCK_VARIATION = EnumProperty.of("variation", RockVariation.class);
|
||||||
@@ -76,26 +73,27 @@ public class RocksMain implements ModInitializer {
|
|||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
RocksConfig.init(MOD_ID, RocksConfig.class);
|
RocksConfig.init(MOD_ID, RocksConfig.class);
|
||||||
if (polymerMode) polymerMode = RocksConfig.enablePolymerMode && !PlatformFunctions.isClientEnv();
|
if (polymerMode) polymerMode = RocksConfig.enablePolymerMode && (RocksConfig.forcePolymerMode || !PlatformFunctions.isClientEnv());
|
||||||
|
|
||||||
PayloadTypeRegistry.playC2S().register(HelloPayload.PACKET_ID, HelloPayload.codec);
|
PayloadTypeRegistry.playC2S().register(HelloPayload.PACKET_ID, HelloPayload.codec);
|
||||||
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
|
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
|
||||||
playersWithMod.add(context.player());
|
if (!RocksConfig.forcePolymerMode) {
|
||||||
if (polymerMode) PolyUtil.hideElementHolders(context.player());
|
playersWithMod.add(context.player());
|
||||||
|
if (polymerMode) PolyUtil.hideElementHolders(context.player());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
ServerPlayConnectionEvents.DISCONNECT.register((playNetworkHandler, server) -> {
|
ServerPlayConnectionEvents.DISCONNECT.register((playNetworkHandler, server) -> {
|
||||||
playersWithMod.remove(playNetworkHandler.player);
|
playersWithMod.remove(playNetworkHandler.player);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (polymerMode) PolyUtil.init();
|
if (polymerMode) PolyUtil.init();
|
||||||
if (hasGeyserMC) GeyserUtil.init(this);
|
|
||||||
|
|
||||||
for (RockType type : RockType.values()) {
|
for (RockType type : RockType.values()) {
|
||||||
Identifier id = id(type.getName());
|
Identifier id = id(type.getName());
|
||||||
rocksByType.put(type, registerBlockWithItem(id, polymerMode ? newRockPolymer(id) : new Rock(id)));
|
rocksByType.put(type, registerBlockWithItem(id, polymerMode ? newRockPolymer(id) : new Rock(id)));
|
||||||
|
|
||||||
if (type != RockType.GRAVEL)
|
if (type != RockType.GRAVEL)
|
||||||
splittersByType.put(type, registerItem(id(type.getSplitterName()), simpleItem(id(type.getSplitterName()))));
|
splittersByType.put(type, registerItem(id(type.getFragment().getName()), simpleItem(id(type.getFragment().getName()))));
|
||||||
}
|
}
|
||||||
for (StickType type : StickType.values()) {
|
for (StickType type : StickType.values()) {
|
||||||
Identifier id = id(type.getName()+"_stick");
|
Identifier id = id(type.getName()+"_stick");
|
||||||
@@ -140,7 +138,4 @@ public class RocksMain implements ModInitializer {
|
|||||||
Registry.register(Registries.ITEM_GROUP, ROCKS_GROUP, RocksGroup);
|
Registry.register(Registries.ITEM_GROUP, ROCKS_GROUP, RocksGroup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static boolean isOnBedrock(PlayerEntity player) {
|
|
||||||
return player != null && hasGeyserMC && GeyserUtil.isOnBedrock(player.getUuid());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ public class ItemDisplayNetherGeyserModel extends ConditionalBlockModel {
|
|||||||
this.main.setDisplaySize(1, 1);
|
this.main.setDisplaySize(1, 1);
|
||||||
this.main.setScale(new Vector3f(2));
|
this.main.setScale(new Vector3f(2));
|
||||||
int rotation = pos.hashCode() % 360;
|
int rotation = pos.hashCode() % 360;
|
||||||
System.out.println(pos.hashCode() + " " + rotation + " " + pos.hashCode() % 360);
|
|
||||||
this.main.setRightRotation(RotationAxis.POSITIVE_Y.rotationDegrees(rotation));
|
this.main.setRightRotation(RotationAxis.POSITIVE_Y.rotationDegrees(rotation));
|
||||||
this.main.setViewRange(0.75f * (RocksConfig.polymerViewDistance / 100f));
|
this.main.setViewRange(0.75f * (RocksConfig.polymerViewDistance / 100f));
|
||||||
this.addElement(this.main);
|
this.addElement(this.main);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public class RocksConfig extends MidnightConfig {
|
|||||||
@Entry(category = effects) public static boolean netherGeyserDamage = true;
|
@Entry(category = effects) public static boolean netherGeyserDamage = true;
|
||||||
|
|
||||||
@Entry(category = effects) public static boolean enablePolymerMode = true;
|
@Entry(category = effects) public static boolean enablePolymerMode = true;
|
||||||
|
@Entry(category = effects) public static boolean forcePolymerMode = false;
|
||||||
@Entry(category = effects, requiredMod = "factorytools", min = 0, max = 200, isSlider = true) public static int polymerViewDistance = 100;
|
@Entry(category = effects, requiredMod = "factorytools", min = 0, max = 200, isSlider = true) public static int polymerViewDistance = 100;
|
||||||
@Entry(category = effects) public static List<String> biomeExclusions = new ArrayList<>();
|
@Entry(category = effects) public static List<String> biomeExclusions = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,8 +66,9 @@ public abstract class Language extends FabricLanguageProvider {
|
|||||||
addBlock(translationBuilder, block, baseTranslation+rockWord);
|
addBlock(translationBuilder, block, baseTranslation+rockWord);
|
||||||
|
|
||||||
if (type != RockType.GRAVEL) {
|
if (type != RockType.GRAVEL) {
|
||||||
Item splitter = Registries.ITEM.get(RocksMain.id(type.getSplitterName()));
|
String splitterBaseTranslation = langHelper.translate(type.getFragment().getStoneBlock().getTranslationKey());
|
||||||
translationBuilder.add(splitter, baseTranslation+splitterWord);
|
Item splitter = Registries.ITEM.get(RocksMain.id(type.getFragment().getName()));
|
||||||
|
translationBuilder.add(splitter, splitterBaseTranslation+splitterWord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (StickType type : StickType.values()) {
|
for (StickType type : StickType.values()) {
|
||||||
@@ -94,7 +95,7 @@ public abstract class Language extends FabricLanguageProvider {
|
|||||||
public void generateTranslations(RegistryWrapper.WrapperLookup registryLookup, TranslationBuilder translationBuilder) {
|
public void generateTranslations(RegistryWrapper.WrapperLookup registryLookup, TranslationBuilder translationBuilder) {
|
||||||
translationBuilder.add("itemGroup.rocks.rocks","This Rocks!");
|
translationBuilder.add("itemGroup.rocks.rocks","This Rocks!");
|
||||||
|
|
||||||
createRepeatedTranslations(translationBuilder, " Rock", " Splitter", " Stick");
|
createRepeatedTranslations(translationBuilder, " Rock", " Fragment", " Stick");
|
||||||
|
|
||||||
addBlock(translationBuilder, RocksMain.Geyser, "Geyser");
|
addBlock(translationBuilder, RocksMain.Geyser, "Geyser");
|
||||||
addBlock(translationBuilder, RocksMain.NetherGeyser, "Nether Geyser");
|
addBlock(translationBuilder, RocksMain.NetherGeyser, "Nether Geyser");
|
||||||
@@ -125,6 +126,8 @@ public abstract class Language extends FabricLanguageProvider {
|
|||||||
|
|
||||||
midnightconfig(translationBuilder, "enablePolymerMode", "Enable Polymer Mode");
|
midnightconfig(translationBuilder, "enablePolymerMode", "Enable Polymer Mode");
|
||||||
midnightconfig(translationBuilder, "enablePolymerMode.tooltip", "Allows the mod to work fully server-sided when used in combination with Polymer and FactoryTools");
|
midnightconfig(translationBuilder, "enablePolymerMode.tooltip", "Allows the mod to work fully server-sided when used in combination with Polymer and FactoryTools");
|
||||||
|
midnightconfig(translationBuilder, "forcePolymerMode", "Force Polymer Mode");
|
||||||
|
midnightconfig(translationBuilder, "forcePolymerMode.tooltip", "Also enables Polymer mode for clients that have ThisRocks! installed");
|
||||||
midnightconfig(translationBuilder, "polymerViewDistance", "Polymer View Distance");
|
midnightconfig(translationBuilder, "polymerViewDistance", "Polymer View Distance");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,6 +173,8 @@ public abstract class Language extends FabricLanguageProvider {
|
|||||||
|
|
||||||
midnightconfig(translationBuilder, "enablePolymerMode", "Aktiviere Polymer-Modus");
|
midnightconfig(translationBuilder, "enablePolymerMode", "Aktiviere Polymer-Modus");
|
||||||
midnightconfig(translationBuilder, "enablePolymerMode.tooltip", "Erlaubt der Mod, komplett serverseitig zu funktionieren, wenn Polymer und FactoryTools installiert sind");
|
midnightconfig(translationBuilder, "enablePolymerMode.tooltip", "Erlaubt der Mod, komplett serverseitig zu funktionieren, wenn Polymer und FactoryTools installiert sind");
|
||||||
|
midnightconfig(translationBuilder, "forcePolymerMode", "Erzwinge Polymer-Modus");
|
||||||
|
midnightconfig(translationBuilder, "forcePolymerMode.tooltip", "Aktiviert den Polymer-Modus auch für Clients, die die ThisRocks! installiert haben");
|
||||||
midnightconfig(translationBuilder, "polymerViewDistance", "Polymer-Sichtweite");
|
midnightconfig(translationBuilder, "polymerViewDistance", "Polymer-Sichtweite");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ public class Models extends FabricModelProvider {
|
|||||||
registerParentedItemModel(itemModelGenerator, item, getItemId("rock_base"), type.getStoneBlock());
|
registerParentedItemModel(itemModelGenerator, item, getItemId("rock_base"), type.getStoneBlock());
|
||||||
|
|
||||||
if (type != RockType.GRAVEL) {
|
if (type != RockType.GRAVEL) {
|
||||||
Item splitter = Registries.ITEM.get(RocksMain.id(type.getSplitterName()));
|
Item splitter = Registries.ITEM.get(RocksMain.id(type.getFragment().getName()));
|
||||||
registerParentedItemModel(itemModelGenerator, splitter, getItemId("splitter_base"), type.getStoneBlock());
|
registerParentedItemModel(itemModelGenerator, splitter, getItemId("splitter_base"), type.getFragment().getStoneBlock());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (StickType type : StickType.values()) {
|
for (StickType type : StickType.values()) {
|
||||||
|
|||||||
@@ -23,14 +23,11 @@ public enum RockType {
|
|||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
public String getSplitterName() {
|
|
||||||
String splitterName = this.name().toLowerCase()+ "_splitter";
|
|
||||||
if (this.equals(RockType.STONE)) splitterName = "cobblestone_splitter";
|
|
||||||
return splitterName;
|
|
||||||
}
|
|
||||||
public Identifier getStoneId() {
|
public Identifier getStoneId() {
|
||||||
return Identifier.ofVanilla(this.toString().toLowerCase());
|
return Identifier.ofVanilla(this.toString().toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Block getStoneBlock() {
|
public Block getStoneBlock() {
|
||||||
return Registries.BLOCK.get(getStoneId());
|
return Registries.BLOCK.get(getStoneId());
|
||||||
}
|
}
|
||||||
@@ -53,4 +50,29 @@ public enum RockType {
|
|||||||
.replace("large_", "")
|
.replace("large_", "")
|
||||||
.equals(type.getName())).findFirst().orElse(RockType.STONE);
|
.equals(type.getName())).findFirst().orElse(RockType.STONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Fragment getFragment() {
|
||||||
|
return new Fragment(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Fragment {
|
||||||
|
private final RockType type;
|
||||||
|
|
||||||
|
Fragment(RockType type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
String splitterName = type.name().toLowerCase()+ "_splitter";
|
||||||
|
if (type.equals(RockType.STONE)) splitterName = "cobblestone_splitter";
|
||||||
|
return splitterName;
|
||||||
|
}
|
||||||
|
public Identifier getStoneId() {
|
||||||
|
if (type==STONE) return Identifier.ofVanilla("cobblestone");
|
||||||
|
return Identifier.ofVanilla(type.toString().toLowerCase());
|
||||||
|
}
|
||||||
|
public Block getStoneBlock() {
|
||||||
|
return Registries.BLOCK.get(getStoneId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
package eu.midnightdust.motschen.rocks.util.geyser;
|
|
||||||
|
|
||||||
import eu.midnightdust.motschen.rocks.RocksMain;
|
|
||||||
import eu.midnightdust.motschen.rocks.blockstates.RockVariation;
|
|
||||||
import eu.midnightdust.motschen.rocks.util.RockType;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.registry.Registries;
|
|
||||||
import net.minecraft.state.property.Properties;
|
|
||||||
import org.geysermc.event.subscribe.Subscribe;
|
|
||||||
import org.geysermc.geyser.api.block.custom.CustomBlockData;
|
|
||||||
import org.geysermc.geyser.api.block.custom.CustomBlockPermutation;
|
|
||||||
import org.geysermc.geyser.api.block.custom.NonVanillaCustomBlockData;
|
|
||||||
import org.geysermc.geyser.api.block.custom.component.BoxComponent;
|
|
||||||
import org.geysermc.geyser.api.block.custom.component.CustomBlockComponents;
|
|
||||||
import org.geysermc.geyser.api.block.custom.component.GeometryComponent;
|
|
||||||
import org.geysermc.geyser.api.block.custom.component.MaterialInstance;
|
|
||||||
import org.geysermc.geyser.api.block.custom.nonvanilla.JavaBlockState;
|
|
||||||
import org.geysermc.geyser.api.event.lifecycle.GeyserDefineCustomBlocksEvent;
|
|
||||||
import org.geysermc.geyser.api.extension.Extension;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static eu.midnightdust.motschen.rocks.RocksMain.*;
|
|
||||||
|
|
||||||
public class GeyserBlocks implements Extension {
|
|
||||||
static final BoxComponent SHAPE = new BoxComponent(-8, 0, -8, 8, 2, 8);
|
|
||||||
static final BoxComponent SHAPE_LARGE = new BoxComponent(-8, 0, -8, 8, 3, 8);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Bedrock follows a very different design than Java.
|
|
||||||
A rock here will contain a property that defines its stone material type, rather than the variation.
|
|
||||||
Each variation will be registered as one such rock block.
|
|
||||||
*/
|
|
||||||
@Subscribe
|
|
||||||
public void onDefineCustomBlocks(GeyserDefineCustomBlocksEvent event) {
|
|
||||||
for (RockVariation variation : RockVariation.values()) {
|
|
||||||
CustomBlockComponents components = CustomBlockComponents.builder()
|
|
||||||
.collisionBox(BoxComponent.emptyBox())
|
|
||||||
.selectionBox(variation == RockVariation.LARGE ? SHAPE_LARGE : SHAPE)
|
|
||||||
.geometry(GeometryComponent.builder()
|
|
||||||
.identifier(String.format("geometry.rocks.%s_rock", variation.asString()))
|
|
||||||
.build())
|
|
||||||
.lightEmission(0)
|
|
||||||
.lightDampening(0)
|
|
||||||
.friction(1f)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
CustomBlockData rockVariant = NonVanillaCustomBlockData.builder()
|
|
||||||
.name(variation.asString()+"_rock")
|
|
||||||
.namespace(MOD_ID)
|
|
||||||
.stringProperty("TYPE", Arrays.stream(RockType.values()).map(RockType::getName).collect(Collectors.toList()))
|
|
||||||
.components(components)
|
|
||||||
.permutations(createRockPermutations())
|
|
||||||
.includedInCreativeInventory(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
event.register(rockVariant);
|
|
||||||
event.registerItemOverride(id(RockType.STONE.getName()).toString(), rockVariant);
|
|
||||||
|
|
||||||
for (RockType type : RockType.values()) {
|
|
||||||
String javaIdentifier = String.format("%s:%s[variation=%s]", MOD_ID, type.getName(), variation.asString());
|
|
||||||
BlockState state = RocksMain.rocksByType.get(type).getDefaultState().with(ROCK_VARIATION, variation);
|
|
||||||
|
|
||||||
JavaBlockState javaBlockState = JavaBlockState.builder()
|
|
||||||
.javaId(Block.getRawIdFromState(state))
|
|
||||||
.identifier(javaIdentifier)
|
|
||||||
.stateGroupId(Registries.BLOCK.getRawId(rocksByType.get(type)))
|
|
||||||
.waterlogged(state.contains(Properties.WATERLOGGED) && state.get(Properties.WATERLOGGED))
|
|
||||||
.canBreakWithHand(true)
|
|
||||||
.build();
|
|
||||||
event.registerOverride(javaBlockState, rockVariant.blockStateBuilder()
|
|
||||||
.stringProperty("TYPE", type.getName())
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<CustomBlockPermutation> createRockPermutations() {
|
|
||||||
List<CustomBlockPermutation> permutations = new ArrayList<>();
|
|
||||||
for (RockType type : RockType.values()) {
|
|
||||||
MaterialInstance material = MaterialInstance.builder()
|
|
||||||
.texture(String.format("minecraft.%s", type.name().toLowerCase(Locale.ROOT)))
|
|
||||||
.renderMethod("opaque")
|
|
||||||
.ambientOcclusion(true)
|
|
||||||
.build();
|
|
||||||
CustomBlockComponents components = CustomBlockComponents.builder()
|
|
||||||
.materialInstance("up", material)
|
|
||||||
.materialInstance("down", material)
|
|
||||||
.materialInstance("north", material)
|
|
||||||
.materialInstance("south", material)
|
|
||||||
.materialInstance("east", material)
|
|
||||||
.materialInstance("west", material)
|
|
||||||
.build();
|
|
||||||
String condition = String.format("query.block_property('%s') == %s", "TYPE", type.getName());
|
|
||||||
permutations.add(new CustomBlockPermutation(components, condition));
|
|
||||||
}
|
|
||||||
return permutations;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
package eu.midnightdust.motschen.rocks.util.geyser;
|
|
||||||
|
|
||||||
import eu.midnightdust.motschen.rocks.RocksMain;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
|
||||||
import org.geysermc.event.subscribe.Subscribe;
|
|
||||||
import org.geysermc.geyser.api.GeyserApi;
|
|
||||||
import org.geysermc.geyser.api.connection.GeyserConnection;
|
|
||||||
import org.geysermc.geyser.api.event.EventRegistrar;
|
|
||||||
import org.geysermc.geyser.api.event.lifecycle.GeyserLoadResourcePacksEvent;
|
|
||||||
|
|
||||||
import java.net.URI;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import static eu.midnightdust.motschen.rocks.RocksMain.MOD_ID;
|
|
||||||
|
|
||||||
public class GeyserUtil implements EventRegistrar {
|
|
||||||
static GeyserApi geyser;
|
|
||||||
|
|
||||||
public static void init(RocksMain mainEntryPoint) {
|
|
||||||
//GeyserConnection connection = GeyserApi.api().connectionByUuid(uuid);
|
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register((server) -> {
|
|
||||||
geyser = GeyserApi.api();
|
|
||||||
EventRegistrar registrar = new GeyserUtil();
|
|
||||||
geyser.eventBus().register(registrar, registrar);
|
|
||||||
geyser.eventBus().register(registrar, new GeyserBlocks()); // register your mod & this class instance as a listener
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@Subscribe
|
|
||||||
public void onGeyserLoadResourcePacksEvent(GeyserLoadResourcePacksEvent event) {
|
|
||||||
//logger().info("Loading: " + event.resourcePacks().size() + " resource packs.");
|
|
||||||
event.resourcePacks().add(FabricLoader.getInstance().getModContainer(MOD_ID).get().findPath("bedrock/rocks.zip").get());
|
|
||||||
// you could add a resource pack with event.resourcePacks().add(path-to-pack)
|
|
||||||
}
|
|
||||||
public static boolean isOnBedrock(UUID uuid) {
|
|
||||||
if (geyser == null) return false;
|
|
||||||
return geyser.isBedrockPlayer(uuid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -69,7 +69,7 @@ public class PolyUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasModOnClient(ServerPlayerEntity player) {
|
public static boolean hasModOnClient(ServerPlayerEntity player) {
|
||||||
return playersWithMod.contains(player) || isOnBedrock(player);
|
return playersWithMod.contains(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Item polymerBlockItem(Block block, Identifier id) {
|
public static Item polymerBlockItem(Block block, Identifier id) {
|
||||||
@@ -79,7 +79,6 @@ public class PolyUtil {
|
|||||||
|
|
||||||
public static Item simplePolymerItem(Identifier id) {
|
public static Item simplePolymerItem(Identifier id) {
|
||||||
return new SimplePolymerItem(new Item.Settings().registryKey(RegistryKey.of(RegistryKeys.ITEM, id)), Items.FLINT, true);
|
return new SimplePolymerItem(new Item.Settings().registryKey(RegistryKey.of(RegistryKeys.ITEM, id)), Items.FLINT, true);
|
||||||
//return new ModeledItem(Items.FLINT, new Item.Settings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerPolymerGroup() {
|
public static void registerPolymerGroup() {
|
||||||
|
|||||||
Binary file not shown.
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"format_version": 2,
|
|
||||||
"header": {
|
|
||||||
"name": "pack.rocks",
|
|
||||||
"description": "pack.description",
|
|
||||||
"uuid": "420e8521-598a-428d-9a44-ed3e2f1b303d",
|
|
||||||
"version": [1, 0, 0],
|
|
||||||
"min_engine_version": [1, 16, 0]
|
|
||||||
},
|
|
||||||
"modules": [
|
|
||||||
{
|
|
||||||
"type": "resources",
|
|
||||||
"uuid": "517e7279-6a76-4956-b34d-f2e126d3187a",
|
|
||||||
"version": [1, 0, 0]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
{
|
|
||||||
"format_version": "1.12.0",
|
|
||||||
"minecraft:geometry": [
|
|
||||||
{
|
|
||||||
"description": {
|
|
||||||
"identifier": "geometry.large_rock",
|
|
||||||
"texture_width": 16,
|
|
||||||
"texture_height": 16,
|
|
||||||
"visible_bounds_width": 2,
|
|
||||||
"visible_bounds_height": 1.5,
|
|
||||||
"visible_bounds_offset": [0, 0.25, 0]
|
|
||||||
},
|
|
||||||
"bones": [
|
|
||||||
{
|
|
||||||
"name": "bb_main",
|
|
||||||
"pivot": [0, 0, 0],
|
|
||||||
"cubes": [
|
|
||||||
{
|
|
||||||
"origin": [-5, 0, -3],
|
|
||||||
"size": [12, 3, 7],
|
|
||||||
"uv": {
|
|
||||||
"north": {"uv": [0, 0], "uv_size": [12, 3]},
|
|
||||||
"east": {"uv": [0, 0], "uv_size": [7, 3]},
|
|
||||||
"south": {"uv": [0, 0], "uv_size": [12, 3]},
|
|
||||||
"west": {"uv": [0, 0], "uv_size": [7, 3]},
|
|
||||||
"up": {"uv": [12, 7], "uv_size": [-12, -7]},
|
|
||||||
"down": {"uv": [12, 7], "uv_size": [-12, -7]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"origin": [-1, 3, -1],
|
|
||||||
"size": [7, 1, 4],
|
|
||||||
"uv": {
|
|
||||||
"north": {"uv": [0, 0], "uv_size": [7, 1]},
|
|
||||||
"east": {"uv": [0, 0], "uv_size": [4, 1]},
|
|
||||||
"south": {"uv": [0, 0], "uv_size": [7, 1]},
|
|
||||||
"west": {"uv": [0, 0], "uv_size": [4, 1]},
|
|
||||||
"up": {"uv": [7, 4], "uv_size": [-7, -4]},
|
|
||||||
"down": {"uv": [7, 4], "uv_size": [-7, -4]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"origin": [-4, 0, -5],
|
|
||||||
"size": [8, 1, 10],
|
|
||||||
"uv": {
|
|
||||||
"north": {"uv": [0, 0], "uv_size": [8, 1]},
|
|
||||||
"east": {"uv": [0, 0], "uv_size": [10, 1]},
|
|
||||||
"south": {"uv": [0, 0], "uv_size": [8, 1]},
|
|
||||||
"west": {"uv": [0, 0], "uv_size": [10, 1]},
|
|
||||||
"up": {"uv": [8, 10], "uv_size": [-8, -10]},
|
|
||||||
"down": {"uv": [8, 10], "uv_size": [-8, -10]}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB |
@@ -30,6 +30,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"accessWidener" : "thisrocks.accesswidener",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"rocks.mixins.json"
|
"rocks.mixins.json"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user