Skip to content

Commit

Permalink
Update fabric api and some tweaks to virtual entities
Browse files Browse the repository at this point in the history
  • Loading branch information
Patbox committed Jun 9, 2024
1 parent 4a30a20 commit 08973d3
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 37 deletions.
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ org.gradle.jvmargs=-Xmx4G
# Fabric Properties
# check these on https://fabricmc.net/use

minecraft_version=1.21-pre3
yarn_mappings=1.21-pre3+build.1
minecraft_version=1.21-pre4
yarn_mappings=1.21-pre4+build.1
loader_version=0.15.11

# Fabric API
fabric_version=0.99.5+1.21
fabric_version=0.100.0+1.21

maven_group = eu.pb4

mod_version = 0.9.0-pre.1
mod_version = 0.9.0-pre.2

minecraft_version_supported = ">=1.20.5-"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,30 +325,18 @@ public static void clearTabs(Predicate<InternalClientItemGroup> removePredicate)
ITEM_GROUPS.removeIf(removePredicate);
CreativeInventoryScreenAccessor.setSelectedTab(ItemGroups.getDefaultTab());

if (CompatStatus.FABRIC_ITEM_GROUP) {
try {
var f1 = CreativeInventoryScreen.class.getDeclaredField("fabric_currentPage");
f1.setAccessible(true);
f1.setInt(null, 0);
} catch (Throwable e) {
if (PolymerImpl.LOG_MORE_ERRORS) {
PolymerImpl.LOGGER.error("Failed to change item group page (FABRIC)!", e);
}
}
}

if (CompatStatus.QUILT_ITEM_GROUP) {
if (CompatStatus.FABRIC_ITEM_GROUP || CompatStatus.QUILT_ITEM_GROUP) {
try {
for (var f1 : CreativeInventoryScreen.class.getDeclaredFields()) {
if (f1.getName().contains("quilt$currentPage")) {
if (f1.getName().contains("currentPage")) {
f1.setAccessible(true);
f1.setInt(null, 0);
break;
}
}
} catch (Throwable e) {
if (PolymerImpl.LOG_MORE_ERRORS) {
PolymerImpl.LOGGER.error("Failed to change item group page (QUILT)!", e);
PolymerImpl.LOGGER.error("Failed to change item group page (FABRIC / QUILT)!", e);
}
}
}
Expand All @@ -372,7 +360,7 @@ private static void setItemGroupPage(ItemGroup group, int page) {
((ClientItemGroupExtension) group).polymerCore$setPage(page);
if (CompatStatus.FABRIC_ITEM_GROUP) {
try {
((net.fabricmc.fabric.impl.itemgroup.FabricItemGroup) group).setPage(page);
((net.fabricmc.fabric.impl.itemgroup.FabricItemGroupImpl) group).fabric_setPage(page);
} catch (Throwable e) {
PolymerImpl.LOGGER.warn("Couldn't set page of ItemGroup (FABRIC)", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,14 @@
public abstract class AbstractElement implements VirtualElement {
private ElementHolder holder;
private Vec3d offset = Vec3d.ZERO;
@Nullable
private Vec3d overridePos;
@Nullable
protected Vec3d lastSyncedPos;
private InteractionHandler handler = InteractionHandler.EMPTY;



@Override
public Vec3d getOffset() {
return this.offset;
Expand All @@ -22,6 +28,21 @@ public void setOffset(Vec3d offset) {
this.offset = offset;
}

@Nullable
public Vec3d getOverridePos() {
return this.overridePos;
}

@Nullable
public void setOverridePos(Vec3d vec3d) {
this.overridePos = vec3d;
}

@Override
public Vec3d getLastSyncedPos() {
return this.lastSyncedPos;
}

@Override
public @Nullable ElementHolder getHolder() {
return this.holder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,20 +67,28 @@ public IntList getEntityIds() {
public void setHolder(@Nullable ElementHolder holder) {
super.setHolder(holder);
if (holder != null) {
var pos = holder.getPos().add(this.getOffset());
var pos = this.getCurrentPos();
this.entity.setPos(pos.x, pos.y, pos.z);
}
}

@Override
public void setOffset(Vec3d vec3d) {
super.setOffset(vec3d);
if (this.getHolder() != null) {
if (this.getOverridePos() == null && this.getHolder() != null) {
var pos = this.getHolder().getPos().add(vec3d);
this.entity.setPos(pos.x, pos.y, pos.z);
}
}

@Override
public void setOverridePos(Vec3d vec3d) {
super.setOverridePos(vec3d);
if (this.getHolder() != null) {
this.entity.setPos(vec3d.x, vec3d.y, vec3d.z);
}
}

@Override
public void startWatching(ServerPlayerEntity player, Consumer<Packet<ClientPlayPacketListener>> packetConsumer) {
this.entry.sendPackets(player, packetConsumer);
Expand All @@ -93,17 +101,26 @@ public void stopWatching(ServerPlayerEntity player, Consumer<Packet<ClientPlayPa

@Override
public void notifyMove(Vec3d oldPos, Vec3d currentPos, Vec3d delta) {
if (this.getHolder() != null) {
if (this.getOverridePos() == null && this.getHolder() != null) {
var pos = currentPos.add(this.getOffset());
this.entity.setPos(pos.x, pos.y, pos.z);
}
}

@Override
public void setInitialPosition(Vec3d pos) {
pos = pos.add(this.getOffset());
this.entity.setPosition(pos);
((EntityTrackerEntryAccessor) this.entry).getTrackedPos().setPos(pos);
if (this.getOverridePos() == null) {
pos = pos.add(this.getOffset());
this.entity.setPosition(pos);
((EntityTrackerEntryAccessor) this.entry).getTrackedPos().setPos(pos);
} else {
((EntityTrackerEntryAccessor) this.entry).getTrackedPos().setPos(this.getOverridePos());
}
}

@Override
public Vec3d getLastSyncedPos() {
return this.entry.getPos();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ public abstract class GenericEntityElement extends AbstractElement {
private final UUID uuid = UUID.randomUUID();
private float pitch;
private float yaw;
private Vec3d lastSyncedPos;
private boolean isRotationDirty;
private boolean sendPositionUpdates = true;

Expand Down Expand Up @@ -94,14 +93,6 @@ public final int getEntityId() {
return this.id;
}


public void setOffset(Vec3d offset) {
super.setOffset(offset);
if (this.sendPositionUpdates && this.getHolder() != null) {
this.sendPositionUpdates();
}
}

protected abstract EntityType<? extends Entity> getEntityType();

@Override
Expand All @@ -113,7 +104,7 @@ public void startWatching(ServerPlayerEntity player, Consumer<Packet<ClientPlayP

protected Packet<ClientPlayPacketListener> createSpawnPacket(ServerPlayerEntity player) {
if (this.lastSyncedPos == null) {
this.lastSyncedPos = this.getHolder().getPos().add(this.getOffset());
this.lastSyncedPos = this.getCurrentPos();
}
return new EntitySpawnS2CPacket(this.id, this.uuid, this.lastSyncedPos.x, this.lastSyncedPos.y, this.lastSyncedPos.z, this.pitch, this.yaw, this.getEntityType(), 0, Vec3d.ZERO, this.yaw);
}
Expand Down Expand Up @@ -151,7 +142,7 @@ protected void sendPositionUpdates() {
return;
}
Packet<ClientPlayPacketListener> packet = null;
var pos = this.getHolder().getPos().add(this.getOffset());
var pos = this.getCurrentPos();

if (pos.equals(this.lastSyncedPos)) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,24 @@ public interface VirtualElement {

Vec3d getOffset();
void setOffset(Vec3d vec3d);
@Nullable
default Vec3d getOverridePos() {
return null;
}

@Nullable
default void setOverridePos(Vec3d vec3d) {};

default Vec3d getCurrentPos() {
var pos = this.getOverridePos();
return pos != null ? pos : (this.getHolder() != null ? this.getHolder().getPos().add(this.getOffset()) : Vec3d.ZERO);
}


@Nullable
default Vec3d getLastSyncedPos() {
return this.getCurrentPos();
}

void startWatching(ServerPlayerEntity player, Consumer<Packet<ClientPlayPacketListener>> packetConsumer);
void stopWatching(ServerPlayerEntity player, Consumer<Packet<ClientPlayPacketListener>> packetConsumer);
Expand Down

0 comments on commit 08973d3

Please sign in to comment.