Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
with:
cache: gradle
distribution: microsoft
java-version: 21
java-version: 25
- name: Build with Gradle
run: gradle build
- name: Upload Artifacts
Expand Down
20 changes: 11 additions & 9 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
plugins {
id "fabric-loom" version "1.10.5"
id "net.fabricmc.fabric-loom" version "1.15+"
id "maven-publish"
}

archivesBaseName = project.archives_base_name
base {
archivesName = project.archives_base_name
}

version = project.mod_version
group = project.maven_group

Expand All @@ -21,14 +24,13 @@ repositories {
dependencies {
// Main
minecraft("com.mojang:minecraft:${project.minecraft_version}")
mappings("net.fabricmc:yarn:${project.yarn_mappings}:v2")
modImplementation("net.fabricmc:fabric-loader:${project.loader_version}")
implementation("net.fabricmc:fabric-loader:${project.loader_version}")

// Fabric API
modImplementation("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")
implementation("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")

// Plasmid
modImplementation("xyz.nucleoid:plasmid:${project.plasmid_version}")
implementation("xyz.nucleoid:plasmid:${project.plasmid_version}")
}

processResources {
Expand All @@ -40,12 +42,12 @@ processResources {
}

java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}

tasks.withType(JavaCompile) {
options.release = 21
options.release = 25
options.encoding = "UTF-8"
}

Expand Down
9 changes: 4 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ mod_version = 1.0.0
org.gradle.jvmargs = -Xmx1G

# Versions
minecraft_version = 1.21.4
yarn_mappings = 1.21.4+build.8
loader_version = 0.16.14
fabric_version = 0.119.2+1.21.4
minecraft_version=26.2
loader_version=0.19.2
fabric_version=0.152.2+26.2

plasmid_version = 0.6.3+1.21.4
plasmid_version=0.7.2-SNAPSHOT+26.2
15 changes: 8 additions & 7 deletions src/main/java/io/github/haykam821/colorswap/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,21 @@
import io.github.haykam821.colorswap.game.phase.ColorSwapWaitingPhase;
import io.github.haykam821.colorswap.game.prism.Prisms;
import net.fabricmc.api.ModInitializer;
import net.minecraft.block.Block;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.world.level.block.Block;
import net.minecraft.core.registries.Registries;
import net.minecraft.tags.TagKey;
import net.minecraft.resources.Identifier;
import xyz.nucleoid.plasmid.api.game.GameType;
import xyz.nucleoid.plasmid.api.game.GameTypes;

public class Main implements ModInitializer {
private static final String MOD_ID = "colorswap";

private static final Identifier COLOR_SWAP_ID = Main.identifier("color_swap");
public static final GameType<ColorSwapConfig> COLOR_SWAP_TYPE = GameType.register(COLOR_SWAP_ID, ColorSwapConfig.CODEC, ColorSwapWaitingPhase::open);
public static final GameType<ColorSwapConfig> COLOR_SWAP_TYPE = GameTypes.register(COLOR_SWAP_ID, ColorSwapConfig.CODEC, ColorSwapWaitingPhase::open);

private static final Identifier PLATFORM_BLOCKS_ID = Main.identifier("platform_blocks");
public static final TagKey<Block> PLATFORM_BLOCKS = TagKey.of(RegistryKeys.BLOCK, PLATFORM_BLOCKS_ID);
public static final TagKey<Block> PLATFORM_BLOCKS = TagKey.create(Registries.BLOCK, PLATFORM_BLOCKS_ID);

@Override
public void onInitialize() {
Expand All @@ -30,6 +31,6 @@ public void onInitialize() {
}

public static Identifier identifier(String path) {
return Identifier.of(MOD_ID, path);
return Identifier.fromNamespaceAndPath(MOD_ID, path);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,25 @@
import io.github.haykam821.colorswap.game.map.ColorSwapMapConfig;
import io.github.haykam821.colorswap.game.prism.PrismConfig;
import net.minecraft.SharedConstants;
import net.minecraft.sound.SoundEvent;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.math.intprovider.ConstantIntProvider;
import net.minecraft.util.math.intprovider.IntProvider;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.util.valueproviders.ConstantInt;
import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.util.valueproviders.IntProviders;
import xyz.nucleoid.plasmid.api.game.common.config.WaitingLobbyConfig;

public class ColorSwapConfig {
public static final MapCodec<ColorSwapConfig> CODEC = RecordCodecBuilder.mapCodec(instance -> {
return instance.group(
ColorSwapMapConfig.CODEC.fieldOf("map").forGetter(ColorSwapConfig::getMapConfig),
WaitingLobbyConfig.CODEC.fieldOf("players").forGetter(ColorSwapConfig::getPlayerConfig),
PrismConfig.CODEC.optionalFieldOf("prisms").forGetter(ColorSwapConfig::getPrismConfig),
Codec.INT.optionalFieldOf("guide_ticks", SharedConstants.TICKS_PER_SECOND * 10).forGetter(ColorSwapConfig::getGuideTicks),
IntProvider.NON_NEGATIVE_CODEC.optionalFieldOf("ticks_until_close", ConstantIntProvider.create(SharedConstants.TICKS_PER_SECOND * 5)).forGetter(ColorSwapConfig::getTicksUntilClose),
SoundEvent.CODEC.optionalFieldOf("swap_sound", SoundEvents.BLOCK_NOTE_BLOCK_SNARE.value()).forGetter(ColorSwapConfig::getSwapSound),
Codec.INT.optionalFieldOf("swap_time", -1).forGetter(ColorSwapConfig::getSwapTime),
Codec.INT.optionalFieldOf("erase_time", -1).forGetter(ColorSwapConfig::getEraseTime),
Codec.INT.optionalFieldOf("no_knockback_rounds", -1).forGetter(ColorSwapConfig::getNoKnockbackRounds)
).apply(instance, ColorSwapConfig::new);
});
public static final MapCodec<ColorSwapConfig> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group(
ColorSwapMapConfig.CODEC.fieldOf("map").forGetter(ColorSwapConfig::getMapConfig),
WaitingLobbyConfig.CODEC.fieldOf("players").forGetter(ColorSwapConfig::getPlayerConfig),
PrismConfig.CODEC.optionalFieldOf("prisms").forGetter(ColorSwapConfig::getPrismConfig),
Codec.INT.optionalFieldOf("guide_ticks", SharedConstants.TICKS_PER_SECOND * 10).forGetter(ColorSwapConfig::getGuideTicks),
IntProviders.NON_NEGATIVE_CODEC.optionalFieldOf("ticks_until_close", ConstantInt.of(SharedConstants.TICKS_PER_SECOND * 5)).forGetter(ColorSwapConfig::getTicksUntilClose),
SoundEvent.DIRECT_CODEC.optionalFieldOf("swap_sound", SoundEvents.NOTE_BLOCK_SNARE.value()).forGetter(ColorSwapConfig::getSwapSound),
Codec.INT.optionalFieldOf("swap_time", -1).forGetter(ColorSwapConfig::getSwapTime),
Codec.INT.optionalFieldOf("erase_time", -1).forGetter(ColorSwapConfig::getEraseTime),
Codec.INT.optionalFieldOf("no_knockback_rounds", -1).forGetter(ColorSwapConfig::getNoKnockbackRounds)
).apply(instance, ColorSwapConfig::new));

private final ColorSwapMapConfig mapConfig;
private final WaitingLobbyConfig playerConfig;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.github.haykam821.colorswap.game;

import io.github.haykam821.colorswap.game.phase.ColorSwapActivePhase;
import net.minecraft.entity.boss.BossBar;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.world.BossEvent;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.Component;
import xyz.nucleoid.plasmid.api.game.common.GlobalWidgets;
import xyz.nucleoid.plasmid.api.game.common.widget.BossBarWidget;

Expand All @@ -12,7 +12,7 @@ public class ColorSwapTimerBar {
private final BossBarWidget bar;

public ColorSwapTimerBar(GlobalWidgets widgets) {
this.bar = widgets.addBossBar(this.getTitle(), BossBar.Color.RED, BossBar.Style.PROGRESS);
this.bar = widgets.addBossBar(this.getTitle(), BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.PROGRESS);
}

public void tick(ColorSwapActivePhase phase) {
Expand All @@ -33,7 +33,7 @@ private void cycleTitleColor() {
this.bar.setTitle(this.getTitle());
}

private Text getTitle() {
return Text.translatable("gameType.colorswap.color_swap").setStyle(this.titleStyle);
private Component getTitle() {
return Component.translatable("gameType.colorswap.color_swap").setStyle(this.titleStyle);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,42 @@

import com.google.common.collect.ImmutableList;

import net.minecraft.text.Style;
import net.minecraft.util.Formatting;
import net.minecraft.network.chat.Style;
import net.minecraft.ChatFormatting;
import net.minecraft.util.Util;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.RandomSource;
import org.jetbrains.annotations.UnknownNullability;

public final class RainbowTextColors {
private static final List<Style> STYLES = createStyles(new int[] {
Formatting.RED.getColorValue(),
Formatting.GOLD.getColorValue(),
Formatting.YELLOW.getColorValue(),
Formatting.GREEN.getColorValue(),
Formatting.BLUE.getColorValue(),
Formatting.LIGHT_PURPLE.getColorValue(),
private static final List<Style> STYLES = createStyles(new ChatFormatting[] {
ChatFormatting.RED,
ChatFormatting.GOLD,
ChatFormatting.YELLOW,
ChatFormatting.GREEN,
ChatFormatting.BLUE,
ChatFormatting.LIGHT_PURPLE,
});

private RainbowTextColors() {
return;
}

public static Style getInitialStyle() {
return STYLES.get(0);
return STYLES.getFirst();
}

public static Style getRandomStyle(Random random) {
public static Style getRandomStyle(RandomSource random) {
return Util.getRandom(STYLES, random);
}

public static Style getNextStyle(Style style) {
return STYLES.get((STYLES.indexOf(style) + 1) % STYLES.size());
}

private static List<Style> createStyles(int[] colors) {
private static List<Style> createStyles(ChatFormatting @UnknownNullability [] colors) {
ImmutableList.Builder<Style> styles = ImmutableList.builderWithExpectedSize(colors.length);

for (int color : colors) {
for (ChatFormatting color : colors) {
styles.add(Style.EMPTY.withColor(color));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@

import eu.pb4.polymer.core.api.other.PolymerComponent;
import io.github.haykam821.colorswap.Main;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import net.minecraft.core.component.DataComponentType;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.Registry;
import net.minecraft.resources.Identifier;

public final class ColorSwapDataComponentTypes {
private static final Identifier PRISM_ID = Main.identifier("prism");

public static final ComponentType<PrismComponent> PRISM = ComponentType.<PrismComponent>builder()
.codec(PrismComponent.CODEC)
.cache()
public static final DataComponentType<PrismComponent> PRISM = DataComponentType.<PrismComponent>builder()
.persistent(PrismComponent.CODEC)
.cacheEncoding()
.build();

public static void register() {
Registry.register(Registries.DATA_COMPONENT_TYPE, PRISM_ID, PRISM);
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, PRISM_ID, PRISM);
PolymerComponent.registerDataComponent(PRISM);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@

import io.github.haykam821.colorswap.game.prism.Prism;
import io.github.haykam821.colorswap.game.prism.Prisms;
import net.minecraft.item.ItemStack;
import net.minecraft.world.item.ItemStack;

public record PrismComponent(Prism prism) {
public static final Codec<PrismComponent> CODEC = RecordCodecBuilder.create(instance -> {
return instance.group(
Prisms.REGISTRY.fieldOf("prism").forGetter(PrismComponent::prism)
).apply(instance, PrismComponent::new);
});
public static final Codec<PrismComponent> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Prisms.REGISTRY.fieldOf("prism").forGetter(PrismComponent::prism)
).apply(instance, PrismComponent::new));

public static Prism get(ItemStack stack) {
PrismComponent component = stack.get(ColorSwapDataComponentTypes.PRISM);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,30 @@
import java.util.function.Function;

import io.github.haykam821.colorswap.Main;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import net.minecraft.core.component.DataComponents;
import net.minecraft.world.item.Item;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.Identifier;
import net.minecraft.world.item.Rarity;

public final class ColorSwapItems {
public static final Item PRISM = register("prism", PrismItem::new, new Item.Settings()
.maxCount(1)
public static final Item PRISM = register("prism", PrismItem::new, new Item.Properties()
.stacksTo(1)
.rarity(Rarity.RARE)
.component(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, true));
.component(DataComponents.ENCHANTMENT_GLINT_OVERRIDE, true));

public static void initialize() {
return;
}
}

private static Item register(String path, Function<Item.Settings, Item> factory, Item.Settings settings) {
private static Item register(String path, Function<Item.Properties, Item> factory, Item.Properties settings) {
Identifier id = Main.identifier(path);
RegistryKey<Item> key = RegistryKey.of(RegistryKeys.ITEM, id);
ResourceKey<Item> key = ResourceKey.create(Registries.ITEM, id);

Item item = factory.apply(settings.registryKey(key));
Item item = factory.apply(settings.setId(key));

return Registry.register(Registries.ITEM, Main.identifier(path), item);
return Registry.register(BuiltInRegistries.ITEM, Main.identifier(path), item);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
import eu.pb4.polymer.core.api.item.PolymerItem;
import io.github.haykam821.colorswap.game.component.PrismComponent;
import io.github.haykam821.colorswap.game.prism.Prism;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import xyz.nucleoid.packettweaker.PacketContext;
import net.fabricmc.fabric.api.networking.v1.context.PacketContext;
import net.minecraft.core.HolderLookup;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.resources.Identifier;

public class PrismItem extends Item implements PolymerItem {
public PrismItem(Item.Settings settings) {
public PrismItem(Item.Properties settings) {
super(settings);
}

Expand All @@ -21,7 +22,7 @@ public Item getPolymerItem(ItemStack stack, PacketContext context) {
}

@Override
public Identifier getPolymerItemModel(ItemStack stack, PacketContext context) {
public Identifier getPolymerItemModel(ItemStack stack, PacketContext context, HolderLookup.Provider lookup) {
return null;
}
}
Loading
Loading