Skip to content

Commit be8434d

Browse files
committed
Revert data attachment merge
This reverts commit 10a3861, reversing changes made to eddefee.
1 parent 10a3861 commit be8434d

5 files changed

Lines changed: 28 additions & 29 deletions

File tree

gradle.properties

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,17 @@ minecraft_version=1.21.1
1818
# as they do not follow standard versioning conventions.
1919
minecraft_version_range=[1.21.1]
2020
# The Neo version must agree with the Minecraft version to get a valid artifact
21-
neo_version=21.1.200
21+
neo_version=21.1.186
2222
# The Neo version range can use any version of Neo as bounds
23-
neo_version_range=[21.1.200,)
23+
neo_version_range=[21.1.186,)
2424
# The loader version range can only use the major version of FML as bounds
2525
loader_version_range=[1,)
2626

2727
## Mod Properties
2828

2929
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
3030
# Must match the String constant located in the main mod class annotated with @Mod.
31-
mod_id=7\
32-
/.*-+****************************rainbowsheep
31+
mod_id=rainbowsheep
3332
# The human-readable display name for the mod.
3433
mod_name=Rainbow Sheep
3534
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.

src/main/java/com/gmail/sheepingtoninc/rainbowsheep/RainbowSheep.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.gmail.sheepingtoninc.rainbowsheep.block.FlagCarpetBlock;
55
import com.gmail.sheepingtoninc.rainbowsheep.block.FlagWoolBlock;
66
import com.gmail.sheepingtoninc.rainbowsheep.item.RainbowDyeItem;
7-
import com.mojang.serialization.Codec;
87
import net.minecraft.world.item.BlockItem;
98
import net.minecraft.world.item.Item;
109
import net.minecraft.world.level.block.Block;
@@ -15,28 +14,19 @@
1514
import net.neoforged.bus.api.IEventBus;
1615
import net.neoforged.fml.ModContainer;
1716
import net.neoforged.fml.common.Mod;
18-
import net.neoforged.neoforge.attachment.AttachmentType;
1917
import net.neoforged.neoforge.registries.DeferredBlock;
2018
import net.neoforged.neoforge.registries.DeferredItem;
2119
import net.neoforged.neoforge.registries.DeferredRegister;
22-
import net.neoforged.neoforge.registries.NeoForgeRegistries;
23-
import org.apache.logging.log4j.LogManager;
24-
import org.apache.logging.log4j.Logger;
25-
2620
import java.util.function.Supplier;
2721

2822
@Mod(RainbowSheep.MODID)
2923
public class RainbowSheep {
3024
public static final String MODID = "rainbowsheep";
3125

32-
public static final Logger LOGGER = LogManager.getLogger(MODID);
33-
3426
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID);
3527

3628
public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID);
3729

38-
public static final DeferredRegister<AttachmentType<?>> ATTACHMENT_TYPES = DeferredRegister.create(NeoForgeRegistries.ATTACHMENT_TYPES, MODID);
39-
4030
public static final DeferredBlock<Block> RAINBOW_WOOL_BLOCK = BLOCKS.register("rainbow_wool", registryName -> new FlagWoolBlock(BlockBehaviour.Properties.of()
4131
.mapColor(MapColor.COLOR_RED)
4232
.instrument(NoteBlockInstrument.GUITAR)
@@ -136,14 +126,9 @@ public class RainbowSheep {
136126
public static final DeferredItem<RainbowDyeItem> ASEXUAL_DYE_ITEM = ITEMS.register("asexual_dye", () -> new RainbowDyeItem(new Item.Properties(), FlagWool.ASEXUAL));
137127
public static final DeferredItem<RainbowDyeItem> NONBINARY_DYE_ITEM = ITEMS.register("nonbinary_dye", () -> new RainbowDyeItem(new Item.Properties(), FlagWool.NONBINARY));
138128

139-
public static final Supplier<AttachmentType<Integer>> FLAG = ATTACHMENT_TYPES.register(
140-
"flag", () -> AttachmentType.builder(() -> 0).serialize(Codec.INT).build()
141-
);
142-
143129

144130
public RainbowSheep(IEventBus modBus, ModContainer container) {
145131
BLOCKS.register(modBus);
146132
ITEMS.register(modBus);
147-
ATTACHMENT_TYPES.register(modBus);
148133
}
149134
}

src/main/java/com/gmail/sheepingtoninc/rainbowsheep/item/ModCreativeModeTabs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import net.neoforged.fml.common.EventBusSubscriber;
77
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
88

9-
@EventBusSubscriber (modid = RainbowSheep.MODID)
9+
@EventBusSubscriber
1010
public class ModCreativeModeTabs {
1111
@SubscribeEvent
1212
public static void buildContents(BuildCreativeModeTabContentsEvent event) {

src/main/java/com/gmail/sheepingtoninc/rainbowsheep/item/RainbowDyeItem.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.gmail.sheepingtoninc.rainbowsheep.item;
22

3-
import com.gmail.sheepingtoninc.rainbowsheep.RainbowSheep;
43
import com.gmail.sheepingtoninc.rainbowsheep.api.FlagWool;
54
import com.gmail.sheepingtoninc.rainbowsheep.api.IFlagSheep;
65
import net.minecraft.sounds.SoundEvents;
@@ -25,9 +24,8 @@ public RainbowDyeItem(Properties properties, FlagWool flagWool) {
2524
public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity target, InteractionHand hand) {
2625
if (target instanceof Sheep sheep && sheep.isAlive() && !sheep.isSheared() && this.flagWool.ordinal() != ((IFlagSheep) sheep).rainbowSheep$getFlagWool()) {
2726
sheep.level().playSound(player, sheep, SoundEvents.DYE_USE, SoundSource.PLAYERS, 1.0F, 1.0F);
28-
((IFlagSheep) sheep).rainbowSheep$setFlagWool(flagWool.ordinal());
2927
if (!player.level().isClientSide) {
30-
RainbowSheep.LOGGER.info("Current flag int is " + sheep.getData(RainbowSheep.FLAG));
28+
((IFlagSheep) sheep).rainbowSheep$setFlagWool(flagWool.ordinal());
3129
stack.shrink(1);
3230
}
3331

src/main/java/com/gmail/sheepingtoninc/rainbowsheep/mixin/SheepMixin.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.gmail.sheepingtoninc.rainbowsheep.RainbowSheep;
44
import com.gmail.sheepingtoninc.rainbowsheep.api.IFlagSheep;
55
import net.minecraft.core.registries.Registries;
6+
import net.minecraft.nbt.CompoundTag;
67
import net.minecraft.network.syncher.EntityDataAccessor;
8+
import net.minecraft.network.syncher.EntityDataSerializers;
79
import net.minecraft.network.syncher.SynchedEntityData;
810
import net.minecraft.resources.ResourceKey;
911
import net.minecraft.resources.ResourceLocation;
@@ -13,21 +15,20 @@
1315
import org.spongepowered.asm.mixin.Final;
1416
import org.spongepowered.asm.mixin.Mixin;
1517
import org.spongepowered.asm.mixin.Shadow;
18+
import org.spongepowered.asm.mixin.Unique;
1619
import org.spongepowered.asm.mixin.injection.At;
1720
import org.spongepowered.asm.mixin.injection.Inject;
1821
import org.spongepowered.asm.mixin.injection.ModifyArg;
1922
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2023
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2124

22-
import static com.gmail.sheepingtoninc.rainbowsheep.RainbowSheep.FLAG;
23-
import static com.gmail.sheepingtoninc.rainbowsheep.RainbowSheep.LOGGER;
24-
2525

2626
@Mixin(Sheep.class)
2727
public abstract class SheepMixin implements IFlagSheep {
2828
@Shadow public abstract boolean isSheared();
2929

3030
@Shadow @Final private static EntityDataAccessor<Byte> DATA_WOOL_ID;
31+
private static final EntityDataAccessor<Integer> FLAG = SynchedEntityData.defineId(Sheep.class, EntityDataSerializers.INT);
3132

3233
private static final ResourceLocation RAINBOW_LOOT_LOCATION = ResourceLocation.fromNamespaceAndPath("rainbowsheep", "entities/sheep/rainbow");
3334
private static final ResourceKey<LootTable> RAINBOW_LOOT_KEY = ResourceKey.create(Registries.LOOT_TABLE, RAINBOW_LOOT_LOCATION);
@@ -48,19 +49,35 @@ public abstract class SheepMixin implements IFlagSheep {
4849
private static final ResourceKey<LootTable> NONBINARY_LOOT_KEY = ResourceKey.create(Registries.LOOT_TABLE, NONBINARY_LOOT_LOCATION);
4950

5051

52+
@Unique
53+
private SynchedEntityData rainbowSheep$getData() {
54+
return ((Sheep)(Object)this).getEntityData();
55+
}
56+
5157
@Override
5258
public void rainbowSheep$setFlagWool(int flag) {
53-
SynchedEntityData data = ((Sheep)(Object)this).getEntityData();
59+
SynchedEntityData data = this.rainbowSheep$getData();
5460
byte woolByte = data.get(DATA_WOOL_ID);
5561
data.set(DATA_WOOL_ID, (byte)(woolByte & 240));
56-
((Sheep)(Object)this).setData(FLAG, flag);
62+
data.set(FLAG, flag);
5763
}
5864

5965
@Override
6066
public int rainbowSheep$getFlagWool() {
61-
return ((Sheep)(Object) this).getData(FLAG);
67+
return rainbowSheep$getData().get(FLAG);
6268
}
6369

70+
@Inject(method = "defineSynchedData(Lnet/minecraft/network/syncher/SynchedEntityData$Builder;)V", at = @At("TAIL"))
71+
private void defineFlagSynchedData (SynchedEntityData.Builder builder, CallbackInfo ci) {
72+
builder.define(FLAG, 0);
73+
}
74+
75+
@Inject(method = "addAdditionalSaveData(Lnet/minecraft/nbt/CompoundTag;)V", at = @At("TAIL"))
76+
private void addFlagSaveData(CompoundTag compound, CallbackInfo ci) { compound.putInt("Flag", rainbowSheep$getFlagWool()); }
77+
78+
@Inject(method = "readAdditionalSaveData(Lnet/minecraft/nbt/CompoundTag;)V", at = @At("TAIL"))
79+
private void readFlagSaveData(CompoundTag compound, CallbackInfo ci) { rainbowSheep$setFlagWool(compound.getInt("Flag")); }
80+
6481
@ModifyArg(method = "shear", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/Sheep;spawnAtLocation(Lnet/minecraft/world/level/ItemLike;I)Lnet/minecraft/world/entity/item/ItemEntity;"))
6582
private ItemLike shearFlagWool(ItemLike original) {
6683
return switch (rainbowSheep$getFlagWool()) {

0 commit comments

Comments
 (0)