Skip to content
Open
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 SpongeAPI
Submodule SpongeAPI updated 24 files
+1 −1 gradle.properties
+1 −1 src/main/java/org/spongepowered/api/data/Keys.java
+1 −1 src/main/java/org/spongepowered/api/data/type/ItemActionType.java
+2 −0 src/main/java/org/spongepowered/api/effect/potion/PotionEffectTypes.java
+106 −0 src/main/java/org/spongepowered/api/effect/sound/SoundTypes.java
+1 −1 src/main/java/org/spongepowered/api/entity/Angerable.java
+13 −1 src/main/java/org/spongepowered/api/entity/EntityTypes.java
+33 −0 src/main/java/org/spongepowered/api/entity/living/animal/Nautilus.java
+33 −0 src/main/java/org/spongepowered/api/entity/living/animal/NautilusLike.java
+34 −0 src/main/java/org/spongepowered/api/entity/living/animal/ZombieNautilus.java
+2 −1 src/main/java/org/spongepowered/api/entity/living/animal/camel/Camel.java
+32 −0 src/main/java/org/spongepowered/api/entity/living/animal/camel/CamelHusk.java
+32 −0 src/main/java/org/spongepowered/api/entity/living/monster/skeleton/Parched.java
+2 −0 src/main/java/org/spongepowered/api/event/cause/entity/damage/DamageTypes.java
+32 −0 src/main/java/org/spongepowered/api/item/ItemTypes.java
+8 −0 src/main/java/org/spongepowered/api/item/enchantment/EnchantmentTypes.java
+2 −0 src/main/java/org/spongepowered/api/item/inventory/equipment/EquipmentConditions.java
+2 −0 src/main/java/org/spongepowered/api/statistic/Statistics.java
+0 −8 src/main/java/org/spongepowered/api/tag/BiomeTags.java
+2 −0 src/main/java/org/spongepowered/api/tag/BlockTypeTags.java
+8 −0 src/main/java/org/spongepowered/api/tag/EntityTypeTags.java
+17 −1 src/main/java/org/spongepowered/api/tag/ItemTypeTags.java
+0 −1 src/main/java/org/spongepowered/api/world/biome/Biome.java
+59 −61 src/main/java/org/spongepowered/api/world/gamerule/GameRules.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import net.minecraft.server.packs.repository.ServerPacksSource;
import net.minecraft.server.packs.resources.CloseableResourceManager;
import net.minecraft.server.packs.resources.MultiPackResourceManager;
import net.minecraft.server.permissions.LevelBasedPermissionSet;
import net.minecraft.tags.TagLoader;
import net.minecraft.world.level.WorldDataConfiguration;
import org.spongepowered.vanilla.generator.item.ItemRegistries;
Expand Down Expand Up @@ -151,7 +152,7 @@ private static Pair<RegistryAccess.Frozen, ReloadableServerResources> loadVanill
pendingTags,
packRepository.getRequestedFeatureFlags(),
CommandSelection.ALL,
2, // functionPermissionLevel
LevelBasedPermissionSet.ALL_PERMISSIONS, // functionPermissionLevel
Util.backgroundExecutor(), // prepareExecutor
Runnable::run // applyExecutor
).whenComplete((result, ex) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,39 +24,23 @@
*/
package org.spongepowered.vanilla.generator.world.level;

import com.google.common.base.CaseFormat;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.GameRules;
import org.spongepowered.vanilla.generator.Context;
import org.spongepowered.vanilla.generator.Generator;
import org.spongepowered.vanilla.generator.MapEntriesValidator;
import org.spongepowered.vanilla.generator.RegistryEntriesGenerator;
import org.spongepowered.vanilla.generator.RegistryEntriesValidator;
import org.spongepowered.vanilla.generator.RegistryScope;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;

public class LevelDataRegistries {

public static List<Generator> levelDataRegistries(final Context context) {
return List.<Generator>of(
new MapEntriesValidator<>(
new RegistryEntriesValidator<>(
"world.gamerule",
"GameRules",
GameRules.class,
"GAME_RULE_TYPES",
map -> {
final Map<ResourceLocation, Object> out = new HashMap<>(map.size());
map.forEach((BiConsumer<Object, Object>) (k, v) -> {
var key = (GameRules.Key<?>) k;
out.put(ResourceLocation.fromNamespaceAndPath("sponge", CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, key.getId())), v);
});
return out;
}
Registries.GAME_RULE
),
new RegistryEntriesGenerator<>(
"map.decoration",
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ mixinConfigs=mixins.sponge.accessors.json,mixins.sponge.api.json,mixins.sponge.c
mixins.sponge.entityactivation.json,mixins.sponge.exploit.json,mixins.sponge.inventory.json,mixins.sponge.movementcheck.json,\
mixins.sponge.tracker.json,mixins.sponge.ipforward.json,mixins.sponge.optimization.json,mixins.sponge.test.json

minecraftVersion=1.21.10
minecraftVersion=25w44a
recommendedVersion=0-SNAPSHOT

org.gradle.dependency.verification.console=verbose
Expand Down
429 changes: 419 additions & 10 deletions gradle/verification-metadata.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import net.minecraft.network.chat.Component;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.permissions.PermissionSet;
import net.minecraft.util.TaskChainer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.Vec2;
Expand All @@ -50,7 +51,7 @@ public interface CommandSourceStackAccessor {
final Vec3 $$1,
final Vec2 $$2,
final ServerLevel $$3,
final int $$4,
final PermissionSet $$4,
final String $$5,
final Component $$6, final MinecraftServer $$7,
@Nullable final Entity $$8,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,6 @@ public interface MinecraftServerAccessor {

@Accessor("nextTickTimeNanos") void accessor$nextTickTimeNanos(final long nextTickTime);

@Invoker("isSpawningMonsters") boolean invoker$isSpawningMonsters();

@Invoker("setupDebugLevel") void invoker$setupDebugLevel(final WorldData serverConfiguration);

@Invoker("forceDifficulty") void invoker$forceDifficulty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
@Mixin(ZombifiedPiglin.class)
public interface ZombifiedPiglinAccessor {

@Accessor("remainingPersistentAngerTime") int accessor$remainingPersistentAngerTime();
@Accessor("persistentAngerEndTime") long accessor$remainingPersistentAngerTime();

@Accessor("remainingPersistentAngerTime") void accessor$remainingPersistentAngerTime(final int remainingPersistentAngerTime);
@Accessor("persistentAngerEndTime") void accessor$remainingPersistentAngerTime(final long remainingPersistentAngerTime);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
package org.spongepowered.common.accessor.world.entity.player;

import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.server.permissions.PermissionSet;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
Expand All @@ -51,7 +52,7 @@ public interface PlayerAccessor {
@Accessor("DATA_SHOULDER_PARROT_RIGHT") static EntityDataAccessor<OptionalInt> accessor$DATA_SHOULDER_RIGHT() {
throw new UntransformedAccessorError();
}
@Invoker("getPermissionLevel") int invoker$getPermissionLevel();
@Invoker("permissions") PermissionSet invoker$permissions();

@Accessor("sleepCounter") void accessor$sleepCounter(final int sleepCounter);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
package org.spongepowered.common.accessor.world.level;

import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.BaseCommandBlock;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
Expand All @@ -41,6 +42,6 @@ public interface BaseCommandBlockAccessor {

@Accessor("command") void accessor$command(final String command);

@Invoker("createSource") BaseCommandBlock.CloseableCommandBlockSource invoker$createSource();
@Invoker("createSource") BaseCommandBlock.CloseableCommandBlockSource invoker$createSource(ServerLevel level);

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,16 @@
*/
package org.spongepowered.common.accessor.world.level;

import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.gamerules.GameRuleMap;
import net.minecraft.world.level.gamerules.GameRules;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.common.UntransformedAccessorError;

import java.util.Map;

@Mixin(GameRules.class)
public interface GameRulesAccessor {

@Accessor("rules") Map<GameRules.Key<?>, GameRules.Value<?>> accessor$rules();
@Accessor("rules") GameRuleMap accessor$rules();

@Accessor("GAME_RULE_TYPES") static Map<GameRules.Key<?>, GameRules.Type<?>> accessor$GAME_RULE_TYPES() {
throw new UntransformedAccessorError();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,14 @@
*/
package org.spongepowered.common.accessor.world.level;

import net.minecraft.world.level.GameRules;
import com.mojang.serialization.DataResult;
import net.minecraft.world.level.gamerules.GameRule;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

@Mixin(GameRules.Value.class)
@Mixin(GameRule.class)
public interface GameRules_ValueAccessor {

@Invoker("deserialize") void invoker$deserialize(final String serialized);
@Invoker("deserialize") DataResult<?> invoker$deserialize(final String serialized);

}
1 change: 0 additions & 1 deletion src/accessors/resources/mixins.sponge.accessors.json
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@
"world.level.chunk.LevelChunk$BoundTickingBlockEntityAccessor",
"world.level.chunk.LevelChunk$RebindableTickingBlockEntityWrapperAccessor",
"world.level.chunk.LevelChunkAccessor",
"world.level.chunk.storage.ChunkStorageAccessor",
"world.level.chunk.storage.IOWorker$PendingStoreAccessor",
"world.level.chunk.storage.RegionFileAccessor",
"world.level.chunk.storage.SimpleRegionStorageAccessor",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import com.google.inject.Injector;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.permissions.PermissionLevel;
import net.minecraft.world.level.WorldDataConfiguration;
import org.spongepowered.api.Client;
import org.spongepowered.api.Engine;
Expand Down Expand Up @@ -66,7 +67,7 @@ public interface Lifecycle {

void establishGameServices();

void establishServerServices(ResourceManager resourceManager, int functionsPermissionLevel);
void establishServerServices(ResourceManager resourceManager, PermissionLevel functionsPermissionLevel);

void establishServerFeatures();

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/spongepowered/common/SpongeLifecycle.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.permissions.PermissionLevel;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.level.WorldDataConfiguration;
import org.checkerframework.checker.nullness.qual.Nullable;
Expand Down Expand Up @@ -179,7 +180,7 @@ public void establishGameServices() {
}

@Override
public void establishServerServices(final ResourceManager resourceManager, final int functionsPermissionLevel) {
public void establishServerServices(final ResourceManager resourceManager, final PermissionLevel functionsPermissionLevel) {
final SpongeServerScopedServiceProvider serviceProvider = new SpongeServerScopedServiceProvider(this.game, this.injector, functionsPermissionLevel);
serviceProvider.init();
((ResourceManagerBridge) resourceManager).bridge$services(serviceProvider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.mojang.brigadier.tree.CommandNode;
import com.mojang.brigadier.tree.RootCommandNode;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.permissions.PermissionLevel;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.CommandCause;
Expand Down Expand Up @@ -65,7 +66,7 @@ public static boolean canUse(
&& ((CommandSourceStackBridge) source).bridge$getCommandSource() instanceof ServerPlayer) {
// If the entity is a player, then we should try to add it anyway.
final String permission = supplier.get();
SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), permission, 0);
SpongePermissions.registerPermission(Sponge.server().serviceProvider().permissionService(), permission, PermissionLevel.ALL);
return ((CommandCause) source).hasPermission(permission);
}
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.permissions.LevelBasedPermissionSet;
import net.minecraft.server.permissions.PermissionLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
Expand Down Expand Up @@ -58,9 +60,9 @@ public final class SpongeCommandCauseFactory implements CommandCause.Factory {
final CommandSource iCommandSource =
cause.first(CommandSource.class).orElseGet(() -> SpongeCommon.game().systemSubject());
final CommandSourceStack commandSource;
if (iCommandSource instanceof CommandSourceProviderBridge) {
if (iCommandSource instanceof CommandSourceProviderBridge cspb) {
// We know about this one so we can create it using the factory method on the source.
commandSource = ((CommandSourceProviderBridge) iCommandSource).bridge$getCommandSource(cause);
commandSource = cspb.bridge$getCommandSource(cause);
} else {
// try to create a command cause from the given ICommandSource, but as Mojang did not see fit to
// put any identifying characteristics on the object, we have to go it alone...
Expand Down Expand Up @@ -88,7 +90,7 @@ public final class SpongeCommandCauseFactory implements CommandCause.Factory {
context.get(EventContextKeys.LOCATION).map(x -> (ServerLevel) x.world())
.orElseGet(() -> locatable == null ? SpongeCommon.server().getLevel(Level.OVERWORLD) :
(ServerLevel) locatable.serverLocation().world()),
4,
LevelBasedPermissionSet.forLevel(PermissionLevel.OWNERS),
name,
displayName,
SpongeCommon.server(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public static void register(final DataProviderRegistrator registrator) {
.create(Keys.ANGER_LEVEL)
.get(ZombifiedPiglinAccessor::accessor$remainingPersistentAngerTime)
.set(ZombifiedPiglinAccessor::accessor$remainingPersistentAngerTime)
.resetOnDelete(400 + new SplittableRandom().nextInt(400));
.resetOnDelete(() -> (long)(400 + new SplittableRandom().nextInt(400)));
}
// @formatter:on
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import net.minecraft.core.GlobalPos;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.gamerules.GameRules;
import net.minecraft.world.level.storage.LevelData;
import net.minecraft.world.level.storage.PrimaryLevelData;
import net.minecraft.world.level.storage.ServerLevelData;
Expand Down Expand Up @@ -87,7 +88,7 @@ public static void register(final DataProviderRegistrator registrator) {
.create(Keys.WORLD_TYPE)
.get(h -> (WorldType) (Object) h.bridge$dimensionType())
.create(Keys.PVP)
.get(h -> h.bridge$pvp().orElseGet(() -> SpongeCommon.server().isPvpAllowed()))
.get(h -> h.bridge$pvp().orElseGet(() -> SpongeCommon.server().getWorldData().getGameRules().get(GameRules.PVP)))
.create(Keys.SERIALIZATION_BEHAVIOR)
.get(h -> h.bridge$serializationBehavior().orElse(SerializationBehavior.AUTOMATIC))
.create(Keys.VIEW_DISTANCE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
package org.spongepowered.common.data.provider.world;

import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.world.attribute.BedRule;
import net.minecraft.world.attribute.EnvironmentAttributes;
import net.minecraft.world.level.dimension.DimensionType;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.api.ResourceKey;
Expand Down Expand Up @@ -54,7 +56,7 @@ public static void register(final DataProviderRegistrator registrator) {
.create(Keys.WORLD_TYPE_EFFECT)
.get(WorldTypeData::worldTypeEffect)
.create(Keys.SCORCHING)
.get(DimensionType::ultraWarm)
.get(d -> d.attributes().applyModifier(EnvironmentAttributes.WATER_EVAPORATES, false))
.create(Keys.NATURAL_WORLD_TYPE)
.get(DimensionType::natural)
.create(Keys.COORDINATE_MULTIPLIER)
Expand All @@ -64,17 +66,17 @@ public static void register(final DataProviderRegistrator registrator) {
.create(Keys.HAS_CEILING)
.get(DimensionType::hasCeiling)
.create(Keys.PIGLIN_SAFE)
.get(DimensionType::piglinSafe)
.get(d -> d.attributes().applyModifier(EnvironmentAttributes.NETHER_PORTAL_SPAWNS_PIGLINS, false))
.create(Keys.BEDS_USABLE)
.get(DimensionType::bedWorks)
.get(d -> d.attributes().applyModifier(EnvironmentAttributes.BED_RULE, BedRule.CAN_SLEEP_WHEN_DARK).explodes())
.create(Keys.RESPAWN_ANCHOR_USABLE)
.get(DimensionType::respawnAnchorWorks)
.get(d -> d.attributes().applyModifier(EnvironmentAttributes.RESPAWN_ANCHOR_WORKS, false))
.create(Keys.INFINIBURN)
.get(dimensionType -> (Tag<BlockType>) (Object) dimensionType.infiniburn())
.create(Keys.WORLD_FLOOR)
.get(DimensionType::minY)
.create(Keys.HAS_RAIDS)
.get(DimensionType::hasRaids)
.get(d -> d.attributes().applyModifier(EnvironmentAttributes.CAN_START_RAID, true))
.create(Keys.WORLD_HEIGHT)
.get(DimensionType::height)
.create(Keys.WORLD_LOGICAL_HEIGHT)
Expand Down
Loading
Loading