Skip to content
Open
76 changes: 76 additions & 0 deletions build.fabric-modern.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
plugins {
id("java")
id("net.fabricmc.fabric-loom") version "1.17-SNAPSHOT"
}
val modVersion = property("mod.version").toString()
val minecraftVersion = property("mod.minecraft_version").toString()
val loader = stonecutter.current.project.substringAfterLast('-')

group = project.property("maven_group").toString()
version = "$modVersion+$minecraftVersion-$loader"

repositories {
mavenCentral()
}

sourceSets {
main {
resources.srcDir(
"${rootDir}/versions/datagen/${sc.current.version.substringBeforeLast("-")}/src/main/generated"
)
java {
val platform = "de/clickism/clicksigns/platform"
exclude("$platform/forge/**")
exclude("$platform/neoforge/**")
}
}
}

java {

toolchain.languageVersion.set(JavaLanguageVersion.of(25))
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}

base {
archivesName.set(property("archives_base_name").toString())
}

dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
implementation("net.fabricmc:fabric-loader:${property("deps.fabric_loader")}")
implementation("net.fabricmc.fabric-api:fabric-api:${property("deps.fabric_api")}")
}

tasks.processResources {
dependsOn(tasks.named("stonecutterGenerate"))
val properties = mapOf(
"mod_version" to modVersion,
"minecraft_version" to minecraftVersion,
"fabric_loader_version" to project.property("deps.fabric_loader")
)

filesMatching(listOf("fabric.mod.json")) {
expand(properties)
}
inputs.properties(properties)
}

fabricApi {
configureDataGeneration {
val currentVersion = sc.current.version.substringBeforeLast("-")
outputDirectory = rootProject.file("versions/datagen/$currentVersion/src/main/generated")
client = true
}
}

loom {
runConfigs.all {
ideConfigGenerated(true)
runDir = "../../runs/fabric"
if (environment == "client") {
programArgs("--username=ClickToPlay")
}
}
}
7 changes: 4 additions & 3 deletions build.fabric.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ sourceSets {
}

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

toolchain.languageVersion.set(JavaLanguageVersion.of(21))
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

base {
Expand Down
13 changes: 9 additions & 4 deletions build.neoforge.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("net.neoforged.moddev") version "2.0.137"
id("net.neoforged.moddev") version "2.0.141"
id("java")
}
val modVersion = property("mod.version").toString()
Expand Down Expand Up @@ -45,13 +45,18 @@ sourceSets {
resources.srcDir(
"${rootDir}/versions/datagen/${sc.current.version.substringBeforeLast("-")}/src/main/generated"
)
java {
val platform = "de/clickism/clicksigns/platform"
exclude("$platform/fabric/**")
exclude("$platform/forge/**")
}
}
}

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

base {
Expand Down
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
#Wed Jul 01 17:46:24 CST 2026
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
<<<<<<< Updated upstream
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
=======
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
>>>>>>> Stashed changes
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
12 changes: 9 additions & 3 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,17 @@ stonecutter {
create(rootProject) {
fun version(version: String, vararg loaders: String) {
loaders.forEach {
this.version("$version-$it", version)
.buildscript = "build.$it.gradle.kts"
if (stonecutter.eval(version, "<=1.21.1")) {
this.version("$version-$it", version)
.buildscript = "build.$it.gradle.kts"
} else {
this.version("$version-$it", version)
.buildscript = "build.$it-modern.gradle.kts"
}
}
}
version("1.20.1", "fabric", "forge")
vcsVersion = "1.20.1-fabric"
version("1.21.1", "fabric", "neoforge")
vcsVersion = "1.21.1-fabric"
}
}
2 changes: 1 addition & 1 deletion src/main/java/de/clickism/clicksigns/ClickSigns.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class ClickSigns {
public static void initialize() {
ClickSignsBlocks.initialize();
ClickSignsBlockEntityTypes.initialize();
PacketRegistry.register(RoadSignUpdatePacket.TYPE);
PacketRegistry.register(RoadSignUpdatePacket.SUBTYPE);
Platform.network().register(); // Register network
// Local template manager
LOCAL_TEMPLATE_MANAGER.initialize();
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/de/clickism/clicksigns/ClickSignsBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ public class ClickSignsBlocks {
*/
public static final Supplier<Block> ROAD_SIGN = Platform.get().registerBlockWithItem(
"road_sign",
BlockBehaviour.Properties.copy(Blocks.STONE),
//?if < 1.20.4
/*BlockBehaviour.Properties.copy(Blocks.STONE),*/
//? if >= 1.20.4
BlockBehaviour.Properties.ofFullCopy(Blocks.STONE),
RoadSignBlock::new
);

Expand Down
34 changes: 29 additions & 5 deletions src/main/java/de/clickism/clicksigns/block/RoadSignBlock.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.clickism.clicksigns.block;

import com.mojang.serialization.MapCodec;
import de.clickism.clicksigns.entity.RoadSignBlockEntity;
import de.clickism.clicksigns.gui.GuiUtils;
import de.clickism.clicksigns.gui.screen.overview.SignOverviewScreen;
Expand All @@ -9,8 +10,10 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BaseEntityBlock;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
Expand All @@ -27,6 +30,8 @@
public class RoadSignBlock extends HorizontalFacingBlockWithEntity {

// Shapes for each facing direction
//? if >= 1.20.4
public static final MapCodec<RoadSignBlock> CODEC = simpleCodec(RoadSignBlock::new);
private static final double THICKNESS = 0.03;
private static final VoxelShape NORTH_SHAPE = Shapes.box(0, 0, 0, 1, 1, THICKNESS);
private static final VoxelShape SOUTH_SHAPE = NORTH_SHAPE.move(0, 0, 1 - THICKNESS);
Expand All @@ -37,6 +42,12 @@ public RoadSignBlock(Properties properties) {
super(properties);
}

//? if >= 1.20.4 {
@Override
protected MapCodec<? extends BaseEntityBlock> codec() {
return null;
}//? }

@Override
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new RoadSignBlockEntity(pos, state);
Expand All @@ -54,23 +65,33 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {

@Override
public @NotNull VoxelShape getOcclusionShape(
@NotNull BlockState state,
@NotNull BlockGetter level,
@NotNull BlockState state
//? if < 26.1 {
,@NotNull BlockGetter level,
@NotNull BlockPos pos
//?}
) {
return Shapes.empty();
}

@Override
public @NotNull InteractionResult use(
//? if < 1.21.1
/*public*/
//? if >= 1.21.1
protected
@NotNull InteractionResult /*? if < 1.21.1 {*/ /*use*/ /*?} elif >= 1.21.1 {*/ useWithoutItem /*?}*/(
@NotNull BlockState state,
@NotNull Level level,
@NotNull BlockPos pos,
@NotNull Player player,
@NotNull InteractionHand hand,
//? if < 1.21.1
/*@NotNull InteractionHand hand,*/
@NotNull BlockHitResult hit
) {
if (!level.isClientSide) return InteractionResult.SUCCESS;
if (!level.isClientSide/*? if >= 26.1 {*/()/*?}*/) {
return InteractionResult.SUCCESS;
}

if (player.isShiftKeyDown()) return InteractionResult.PASS;
var blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof RoadSignBlockEntity roadSignEntity) {
Expand Down Expand Up @@ -101,4 +122,7 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
public @NotNull RenderShape getRenderShape(@NotNull BlockState state) {
return RenderShape.INVISIBLE;
}
//? if >= 1.21.1 {

//? }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import de.clickism.clicksigns.sign.RoadSign;
import de.clickism.clicksigns.util.nbt.NbtReaderWriterImpl;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
Expand All @@ -13,6 +14,13 @@
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
//? if >= 26.1 {
/*
import net.minecraft.world.level.storage.ValueOutput;
import net.minecraft.world.level.storage.ValueInput;
import net.minecraft.world.level.storage.TagValueOutput;
import net.minecraft.world.level.storage.TagValueInput;
*///?}

/**
* Road sign block entity
Expand Down Expand Up @@ -62,22 +70,66 @@ public void setChanged() {
return ClientboundBlockEntityDataPacket.create(this);
}

//? if < 26.1 {
@Override
public @NotNull CompoundTag getUpdateTag() {
protected void saveAdditional(
CompoundTag tag
//? if >= 1.21.1
, HolderLookup.Provider provider
) {
super.saveAdditional(
tag
//? if >= 1.21.1
, provider
);
if (this.roadSign == null) return;
var writer = new NbtReaderWriterImpl(tag);
RoadSign.NBT_WRITER.write(writer, this.roadSign);
}

@Override
public @NotNull CompoundTag getUpdateTag(
//? if >= 1.21.1
HolderLookup.Provider provider
) {
var tag = new CompoundTag();
this.saveAdditional(tag);
this.saveAdditional(
tag
//? if >= 1.21.1
, provider
);
return tag;
}
//? } elif >= 26.1 {
/*@Override
public @NotNull CompoundTag getUpdateTag(
//? if >= 1.21.1
HolderLookup.Provider provider
) {
var tag = new CompoundTag();
this.saveAdditional(
tag
//? if >= 1.21.1
, provider
);
return tag;
}

@Override
protected void saveAdditional(CompoundTag tag) {
super.saveAdditional(tag);
protected void saveAdditional(
final ValueOutput output
) {
super.saveAdditional(
output
);
if (this.roadSign == null) return;
var writer = new NbtReaderWriterImpl(tag);
var writer = new NbtReaderWriterImpl(output);
RoadSign.NBT_WRITER.write(writer, this.roadSign);
}
*///?}

@Override
//? if < 1.21 {
/*@Override
public void load(CompoundTag tag) {
super.load(tag);
var reader = new NbtReaderWriterImpl(tag);
Expand All @@ -87,4 +139,17 @@ public void load(CompoundTag tag) {
ClickSigns.LOGGER.error("Failed to read road sign from block entity at {}", worldPosition, e);
}
}
*///? }
//? if >= 1.21.1 {
@Override
public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) {
super.loadAdditional(tag, provider);
var reader = new NbtReaderWriterImpl(tag);
try {
this.roadSign = RoadSign.NBT_READER.read(reader);
} catch (Exception e) {
ClickSigns.LOGGER.error("Failed to read road sign from block entity at {}", worldPosition, e);
}
}
//? }
}
Loading