Skip to content

Commit

Permalink
Some bug fixes, make jade/wthit use server provided icon for blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Patbox committed Jun 2, 2024
1 parent c817e69 commit ffc8418
Show file tree
Hide file tree
Showing 45 changed files with 217 additions and 215 deletions.
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ org.gradle.jvmargs=-Xmx4G
# Fabric Properties
# check these on https://fabricmc.net/use

minecraft_version=24w21b
yarn_mappings=24w21b+build.5
minecraft_version=1.21-pre2
yarn_mappings=1.21-pre2+build.1
loader_version=0.15.11

# Fabric API
fabric_version=0.99.1+1.21
fabric_version=0.99.2+1.21

maven_group = eu.pb4

mod_version = 0.9.0-alpha

minecraft_version_supported = ">=1.20.5-"

packet_tweaker_version = 0.5.3+1.20.6
packet_tweaker_version = 0.5.4-dev+1.20.6

is_stable = false
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import eu.pb4.polymer.common.impl.compat.FloodGateUtils;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.listener.PacketListener;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerCommonNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
Expand Down Expand Up @@ -117,6 +118,13 @@ public static void executeWithNetworkingLogic(Runnable runnable) {
FORCE_NETWORKING.set(val);
}

public static void executeWithNetworkingLogic(PacketListener listener, Runnable runnable) {
var val = FORCE_NETWORKING.get();
FORCE_NETWORKING.set(Unit.INSTANCE);
PacketContext.runWithContext(listener, runnable);
FORCE_NETWORKING.set(val);
}

/**
* Allows to execute code with selected player being returned for {@link PolymerCommonUtils#getPlayerContext()}
* calls. Useful for custom packets using writeItemStack and similar methods.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.listener.ClientPlayPacketListener;
import net.minecraft.server.network.EntityTrackerEntry;
import net.minecraft.world.World;
import org.jetbrains.annotations.ApiStatus;

Expand All @@ -32,8 +33,8 @@ protected void writeCustomDataToNbt(NbtCompound nbt) {
}

@Override
public Packet<ClientPlayPacketListener> createSpawnPacket() {
return null;
public Packet<ClientPlayPacketListener> createSpawnPacket(EntityTrackerEntry entityTrackerEntry) {
return super.createSpawnPacket(entityTrackerEntry);
}

static {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import eu.pb4.polymer.core.api.block.PolymerHeadBlock;
import eu.pb4.polymer.core.api.utils.PolymerUtils;
import net.minecraft.block.Block;
import net.minecraft.client.item.TooltipType;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ProfileComponent;
import net.minecraft.item.BlockItem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import eu.pb4.polymer.core.api.utils.PolymerSyncedObject;
import eu.pb4.polymer.core.impl.PolymerImplUtils;
import net.minecraft.block.BlockState;
import net.minecraft.client.item.TooltipType;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.RegistryWrapper;
Expand Down Expand Up @@ -37,18 +37,6 @@ public interface PolymerItem extends PolymerSyncedObject<Item> {
* @return Client-side ItemStack
*/
default ItemStack getPolymerItemStack(ItemStack itemStack, TooltipType tooltipType, RegistryWrapper.WrapperLookup lookup, @Nullable ServerPlayerEntity player) {
if (PolymerImplUtils.POLYMER_ITEM_CLASS_CACHE.getBoolean(this.getClass())) {
RegistryWrapper.WrapperLookup old = null;
if (player == null) {
old = PolymerImplUtils.WRAPPER_LOOKUP_PASSER.get();
PolymerImplUtils.WRAPPER_LOOKUP_PASSER.set(lookup);
}
var x = this.getPolymerItemStack(itemStack, tooltipType, player);
if (player == null) {
PolymerImplUtils.WRAPPER_LOOKUP_PASSER.set(old);
}
return x;
}
return PolymerItemUtils.createItemStack(itemStack, tooltipType, lookup, player);
}

Expand Down Expand Up @@ -96,14 +84,6 @@ default boolean handleMiningOnServer(ItemStack tool, BlockState targetBlock, Blo
return false;
}

/**
* @deprecated Replaced with PolymerItem#getPolymerItemStack(ItemStack, TooltipType, ServerPlayerEntity)
*/
@Deprecated(forRemoval = true)
default ItemStack getPolymerItemStack(ItemStack itemStack, TooltipType tooltipType, @Nullable ServerPlayerEntity player) {
return PolymerItemUtils.createItemStack(itemStack, tooltipType, player);
}

default boolean shouldStorePolymerItemStackCount() {
return false;
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,27 @@
import eu.pb4.polymer.common.api.PolymerCommonUtils;
import eu.pb4.polymer.common.api.events.BooleanEvent;
import eu.pb4.polymer.common.api.events.FunctionEvent;
import eu.pb4.polymer.common.impl.CommonImplUtils;
import eu.pb4.polymer.common.impl.CompatStatus;
import eu.pb4.polymer.core.api.block.PolymerBlockUtils;
import eu.pb4.polymer.core.api.other.PolymerComponent;
import eu.pb4.polymer.core.api.utils.PolymerUtils;
import eu.pb4.polymer.core.impl.PolymerImpl;
import eu.pb4.polymer.core.impl.PolymerImplUtils;
import eu.pb4.polymer.core.impl.TransformingDataComponent;
import eu.pb4.polymer.core.impl.compat.polymc.PolyMcUtils;
import eu.pb4.polymer.resourcepack.api.PolymerResourcePackUtils;
import eu.pb4.polymer.rsm.api.RegistrySyncUtils;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
import net.minecraft.client.item.TooltipType;
import net.minecraft.component.ComponentType;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.*;
import net.minecraft.item.BlockPredicatesChecker;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.item.trim.ArmorTrim;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.nbt.NbtOps;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryOps;
import net.minecraft.registry.RegistryWrapper;
Expand All @@ -45,7 +43,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;

public final class PolymerItemUtils {
Expand Down Expand Up @@ -117,7 +114,6 @@ public final class PolymerItemUtils {
HideableTooltip.of(DataComponentTypes.CAN_BREAK, BlockPredicatesChecker::withShowInTooltip),
HideableTooltip.of(DataComponentTypes.CAN_PLACE_ON, BlockPredicatesChecker::withShowInTooltip)
);
private static final Set<ComponentType<?>> UNSYNCED_COMPONENTS = new ObjectOpenCustomHashSet<>(CommonImplUtils.IDENTITY_HASH);

private PolymerItemUtils() {
}
Expand Down Expand Up @@ -287,12 +283,13 @@ public static boolean isPolymerServerItem(ItemStack itemStack, @Nullable ServerP
if (itemStack.getItem() instanceof PolymerItem) {
return true;
}
var ctx = PacketContext.get();
if (player != null && ctx.getPlayer() != player) {
ctx = PacketContext.of(player);
}

for (var x : itemStack.getComponentChanges().entrySet()) {
if (x.getValue() != null && x.getValue().isPresent()
&& x.getValue().get() instanceof PolymerItemComponent c && c.canSyncRawToClient(player)) {
return false;
} else if (isPolymerComponent(x.getKey())) {
if (!PolymerComponent.canSync(x.getKey(), x.getValue().orElse(null), ctx)) {
return true;
} else if (x.getValue() != null && x.getValue().isPresent()
&& x.getValue().get() instanceof TransformingDataComponent t
Expand All @@ -312,28 +309,6 @@ public static boolean isPolymerServerItem(ItemStack itemStack, @Nullable ServerP
return ITEM_CHECK.invoke((x) -> x.test(itemStack));
}

public static ItemStack createMinimalItemStack(ItemStack itemStack, @Nullable ServerPlayerEntity player) {
return createMinimalItemStack(itemStack, findLookupWrapper(player), player);
}

private static RegistryWrapper.WrapperLookup findLookupWrapper(ServerPlayerEntity player) {
RegistryWrapper.WrapperLookup lookup;
if (player != null) {
lookup = player.getRegistryManager();
} else {
lookup = PacketContext.get().getRegistryWrapperLookup();

if (lookup == null) {
lookup = PolymerImplUtils.WRAPPER_LOOKUP_PASSER.get();

if (lookup == null) {
lookup = PolymerImplUtils.FALLBACK_LOOKUP;
}
}
}
return lookup;
}

/**
* This method creates minimal representation of ItemStack
*
Expand Down Expand Up @@ -385,13 +360,8 @@ public static int getSafeColor(int inputColor) {
* @return Client side ItemStack
*/

public static ItemStack createItemStack(ItemStack itemStack, @Nullable ServerPlayerEntity player) {
return createItemStack(itemStack, PolymerUtils.getTooltipType(player), player);
}


public static ItemStack createItemStack(ItemStack itemStack, TooltipType tooltipContext, @Nullable ServerPlayerEntity player) {
return createItemStack(itemStack, tooltipContext, findLookupWrapper(player), player);
public static ItemStack createItemStack(ItemStack itemStack, RegistryWrapper.WrapperLookup lookup, @Nullable ServerPlayerEntity player) {
return createItemStack(itemStack, PolymerUtils.getTooltipType(player), lookup, player);
}

/**
Expand Down Expand Up @@ -545,15 +515,20 @@ public static ItemWithMetadata getItemSafely(PolymerItem item, ItemStack stack,
return getItemSafely(item, stack, player, PolymerBlockUtils.NESTED_DEFAULT_DISTANCE);
}

/**
* @deprecated Use {@link PolymerComponent#registerDataComponent(ComponentType[])} instead
*/
@Deprecated
public static void markAsPolymer(ComponentType<?>... types) {
for (var x : types) {
UNSYNCED_COMPONENTS.add(x);
RegistrySyncUtils.setServerEntry(Registries.DATA_COMPONENT_TYPE, x);
}
PolymerComponent.registerDataComponent(types);
}


/**
* @deprecated Use {@link PolymerComponent#isPolymerComponent(ComponentType)} instead
*/
@Deprecated
public static boolean isPolymerComponent(ComponentType<?> type) {
return UNSYNCED_COMPONENTS.add(type);
return PolymerComponent.isPolymerComponent(type);
}

public static ItemStack getClientItemStack(ItemStack stack, ServerPlayerEntity player) {
Expand Down Expand Up @@ -590,19 +565,4 @@ interface TooltipSetter<T> {
T setTooltip(T val, boolean value);
}
}

@Deprecated(forRemoval = true)
public static ItemStack getRealItemStack(ItemStack itemStack) {
return getRealItemStack(itemStack, findLookupWrapper(null));
}

@Deprecated(forRemoval = true)
public static ItemStack getPolymerItemStack(ItemStack itemStack, @Nullable ServerPlayerEntity player) {
return getPolymerItemStack(itemStack, PolymerUtils.getTooltipType(player), player);
}

@Deprecated(forRemoval = true)
public static ItemStack getPolymerItemStack(ItemStack itemStack, TooltipType tooltipContext, @Nullable ServerPlayerEntity player) {
return getPolymerItemStack(itemStack, tooltipContext, findLookupWrapper(player), player);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package eu.pb4.polymer.core.api.other;

import eu.pb4.polymer.core.api.utils.PolymerObject;
import eu.pb4.polymer.core.impl.other.PolymerComponentImpl;
import eu.pb4.polymer.rsm.api.RegistrySyncUtils;
import net.minecraft.component.ComponentType;
import net.minecraft.registry.Registries;
import xyz.nucleoid.packettweaker.PacketContext;

public interface PolymerComponent extends PolymerObject {
static void registerDataComponent(ComponentType<?>... types) {
for (var type : types) {
RegistrySyncUtils.setServerEntry(Registries.DATA_COMPONENT_TYPE, type);
PolymerComponentImpl.UNSYNCED_COMPONENTS.add(type);
}
}

static void registerEnchantmentEffectComponent(ComponentType<?>... types) {
for (var type : types) {
RegistrySyncUtils.setServerEntry(Registries.ENCHANTMENT_EFFECT_COMPONENT_TYPE, type);
PolymerComponentImpl.UNSYNCED_COMPONENTS.add(type);
}
}

static boolean isPolymerComponent(ComponentType<?> type) {
return PolymerComponentImpl.UNSYNCED_COMPONENTS.contains(type);
}

static boolean canSync(ComponentType<?> key, Object entry, PacketContext context) {
if (entry instanceof PolymerComponent component && component.canSyncRawToClient(context)) {
return true;
}

return !isPolymerComponent(key);
}

default boolean canSyncRawToClient(PacketContext context) {
return false;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package eu.pb4.polymer.core.api.other;

import eu.pb4.polymer.core.api.utils.PolymerObject;
import eu.pb4.polymer.rsm.api.RegistrySyncUtils;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.stat.StatFormatter;
Expand All @@ -11,13 +12,9 @@
import java.util.HashMap;
import java.util.Map;

public final class PolymerStat extends Identifier implements PolymerObject {
public final class PolymerStat {
private static final Map<Identifier, Text> NAMES = new HashMap<>();

private PolymerStat(String namespace, String path) {
super(namespace, path);
}

/**
* Register a custom server-compatible statistic.
* Registering a {@link net.minecraft.stat.Stat} in the vanilla way will cause clients to disconnect when opening the statistics screen.
Expand All @@ -41,11 +38,12 @@ public static Identifier registerStat(String id, StatFormatter formatter) {
*/
public static Identifier registerStat(String id, Text name, StatFormatter formatter) {
var idx = Identifier.of(id);
PolymerStat identifier = new PolymerStat(idx.getNamespace(), idx.getPath());
Registry.register(Registries.CUSTOM_STAT, id, identifier);
Stats.CUSTOM.getOrCreateStat(identifier, formatter);
NAMES.put(identifier, name);
return identifier;
Registry.register(Registries.CUSTOM_STAT, idx, idx);
Stats.CUSTOM.getOrCreateStat(idx, formatter);
//noinspection unchecked
RegistrySyncUtils.setServerEntry((Registry<Object>) (Object) Registries.CUSTOM_STAT, (Object) idx);
NAMES.put(idx, name);
return idx;
}

/**
Expand Down
Loading

0 comments on commit ffc8418

Please sign in to comment.