Merge branch 'master' into 1.17

# Conflicts:
#	gradle.properties
This commit is contained in:
gnembon committed 2021-01-13 18:19:51 -04:00
commit 0453dc33a0
4 files changed
+25 -9

No files matched your search

+2 -2
View File
@@ -6,10 +6,10 @@ org.gradle.jvmargs=-Xmx1G
# or better: https://modmuss50.me/fabric.html # or better: https://modmuss50.me/fabric.html
minecraft_version=20w51a minecraft_version=20w51a
yarn_mappings=20w51a+build.1 yarn_mappings=20w51a+build.1
loader_version=0.10.8 loader_version=0.11.0
# Mod Properties # Mod Properties
mod_version = 1.4.21 mod_version = 1.4.22
maven_group = carpet maven_group = carpet
archives_base_name = fabric-carpet archives_base_name = fabric-carpet
+1 -1
View File
@@ -36,7 +36,7 @@ import static carpet.settings.RuleCategory.CLIENT;
@SuppressWarnings("CanBeFinal") @SuppressWarnings("CanBeFinal")
public class CarpetSettings public class CarpetSettings
{ {
public static final String carpetVersion = "1.4.21+v201216"; public static final String carpetVersion = "1.4.22+v210113";
public static final Logger LOG = LogManager.getLogger("carpet"); public static final Logger LOG = LogManager.getLogger("carpet");
public static boolean skipGenerationChecks = false; public static boolean skipGenerationChecks = false;
public static boolean impendingFillSkipUpdates = false; public static boolean impendingFillSkipUpdates = false;
@@ -19,6 +19,7 @@ import net.minecraft.item.Items;
import net.minecraft.particle.ParticleTypes; import net.minecraft.particle.ParticleTypes;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.ActionResult;
import net.minecraft.util.dynamic.GlobalPos; import net.minecraft.util.dynamic.GlobalPos;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -113,7 +114,7 @@ public abstract class VillagerEntity_aiMixin extends MerchantEntity
} }
@Inject(method = "interactMob", at = @At("HEAD"), cancellable = true) @Inject(method = "interactMob", at = @At("HEAD"), cancellable = true)
private void onInteract(PlayerEntity playerEntity_1, Hand hand_1, CallbackInfoReturnable<Boolean> cir) private void onInteract(PlayerEntity playerEntity_1, Hand hand_1, CallbackInfoReturnable<ActionResult> cir)
{ {
if (MobAI.isTracking(this, MobAI.TrackingType.VILLAGER_BREEDING)) if (MobAI.isTracking(this, MobAI.TrackingType.VILLAGER_BREEDING))
{ {
@@ -121,7 +122,7 @@ public abstract class VillagerEntity_aiMixin extends MerchantEntity
if (itemStack_1.getItem() == Items.EMERALD) if (itemStack_1.getItem() == Items.EMERALD)
{ {
GlobalPos bedPos = this.brain.getOptionalMemory(MemoryModuleType.HOME).orElse(null); GlobalPos bedPos = this.brain.getOptionalMemory(MemoryModuleType.HOME).orElse(null);
if (bedPos == null || bedPos.getDimension() != world.getRegistryKey()) // get DImension if (bedPos == null || bedPos.getDimension() != world.getRegistryKey()) // get Dimension
{ {
sayNo(); sayNo();
((ServerWorld) getEntityWorld()).spawnParticles(ParticleTypes.BARRIER, getX(), getY() + getStandingEyeHeight() + 1, getZ(), 1, 0.1, 0.1, 0.1, 0.0); ((ServerWorld) getEntityWorld()).spawnParticles(ParticleTypes.BARRIER, getX(), getY() + getStandingEyeHeight() + 1, getZ(), 1, 0.1, 0.1, 0.1, 0.0);
@@ -162,7 +163,7 @@ public abstract class VillagerEntity_aiMixin extends MerchantEntity
1, 0.1, 0.1, 0.1, 0.0); 1, 0.1, 0.1, 0.1, 0.0);
} }
} }
cir.setReturnValue(false); cir.setReturnValue(ActionResult.FAIL);
cir.cancel(); cir.cancel();
} }
} }
@@ -182,23 +182,38 @@ public class CarpetEventServer
public final List<Callback> callList; public final List<Callback> callList;
public final int reqArgs; public final int reqArgs;
final boolean isSystem;
final boolean isGlobalOnly;
final boolean perPlayerDistribution;
public CallbackList(int reqArgs) public CallbackList(int reqArgs, boolean isSystem, boolean isGlobalOnly)
{ {
this.callList = new ArrayList<>(); this.callList = new ArrayList<>();
this.reqArgs = reqArgs; this.reqArgs = reqArgs;
this.isSystem = isSystem;
this.isGlobalOnly = isGlobalOnly;
perPlayerDistribution = isSystem && !isGlobalOnly;
} }
/**
* Handles only built-in events from the events system
* @param argumentSupplier
* @param cmdSourceSupplier
*/
public void call(Supplier<List<Value>> argumentSupplier, Supplier<ServerCommandSource> cmdSourceSupplier) public void call(Supplier<List<Value>> argumentSupplier, Supplier<ServerCommandSource> cmdSourceSupplier)
{ {
if (callList.size() > 0) if (callList.size() > 0)
{ {
List<Value> argv = argumentSupplier.get(); // empty for onTickDone List<Value> argv = argumentSupplier.get(); // empty for onTickDone
ServerCommandSource source = cmdSourceSupplier.get(); ServerCommandSource source = cmdSourceSupplier.get();
String nameCheck = perPlayerDistribution?source.getName():null;
assert argv.size() == reqArgs; assert argv.size() == reqArgs;
List<Callback> fails = new ArrayList<>(); List<Callback> fails = new ArrayList<>();
for (Callback call: callList) for (Callback call: callList)
{ {
// supressing calls where target player hosts simply don't match
// handling global hosts with player targets is left to when the host is resolved (few calls deeper).
if (nameCheck != null && call.optionalTarget != null && !nameCheck.equals(call.optionalTarget)) continue;
if (!call.execute(source, argv)) fails.add(call); if (!call.execute(source, argv)) fails.add(call);
} }
for (Callback call : fails) callList.remove(call); for (Callback call : fails) callList.remove(call);
@@ -876,7 +891,7 @@ public class CarpetEventServer
public Event(String name, int reqArgs, boolean isGlobalOnly, boolean isPublic) public Event(String name, int reqArgs, boolean isGlobalOnly, boolean isPublic)
{ {
this.name = name; this.name = name;
this.handler = new CallbackList(reqArgs); this.handler = new CallbackList(reqArgs, true, isGlobalOnly);
this.globalOnly = isGlobalOnly; this.globalOnly = isGlobalOnly;
this.isPublic = isPublic; this.isPublic = isPublic;
byName.put(name, this); byName.put(name, this);
@@ -924,7 +939,7 @@ public class CarpetEventServer
private Event(String name, CarpetScriptServer server) private Event(String name, CarpetScriptServer server)
{ {
this.name = name; this.name = name;
this.handler = new CallbackList(1); this.handler = new CallbackList(1, false, false);
this.globalOnly = false; this.globalOnly = false;
this.isPublic = true; this.isPublic = true;
server.events.customEvents.put(name, this); server.events.customEvents.put(name, this);