Skip to content

Commit 1e0e167

Browse files
committed
Merge branch 'api-12' into api-17
# Conflicts: # src/main/java/org/spongepowered/common/util/DamageEventUtil.java # src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java
2 parents 378556d + 389b980 commit 1e0e167

4 files changed

Lines changed: 21 additions & 2 deletions

File tree

library-manager/src/main/java/org/spongepowered/libs/LibraryManager.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
import java.io.IOException;
3333
import java.io.InputStreamReader;
34+
import java.io.PrintWriter;
35+
import java.io.StringWriter;
3436
import java.net.HttpURLConnection;
3537
import java.net.URI;
3638
import java.net.URL;
@@ -168,9 +170,17 @@ private Set<Library> scheduleDownloads(
168170

169171
final URL requestUrl = new URI(String.format(LibraryManager.SPONGE_NEXUS_DOWNLOAD_URL,
170172
dep.sha512(), dep.group(), dep.module(), dep.version())).toURL();
171-
final SonatypeResponse response = this.getResponseFor(this.gson, requestUrl);
173+
final SonatypeResponse response;
174+
try {
175+
response = this.getResponseFor(this.gson, requestUrl);
176+
} catch (final IOException e) {
177+
final StringWriter writer = new StringWriter();
178+
e.printStackTrace(new PrintWriter(writer));
179+
failures.add("Failed to get response from '" + requestUrl + "':\n" + writer);
180+
return null;
181+
}
172182
if (response.items().isEmpty()) {
173-
failures.add("No data received from '" + requestUrl + "'!");
183+
failures.add("Empty response received from '" + requestUrl + "'!");
174184
return null;
175185
}
176186
// Sort the items based on the preferred repository order

src/accessors/java/org/spongepowered/common/accessor/server/MinecraftServerAccessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,6 @@ public interface MinecraftServerAccessor {
6868
@Invoker("forceDifficulty") void invoker$forceDifficulty();
6969

7070
@Invoker("waitUntilNextTick") void accessor$waitUntilNextTick();
71+
72+
@Invoker("synchronizeTime") void invoker$synchronizeTime(ServerLevel level);
7173
}

src/main/java/org/spongepowered/common/inventory/adapter/impl/slots/SlotAdapter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public InventoryTransactionResult.Poll poll() {
7777
}
7878

7979
this.inventoryAdapter$getFabric().fabric$setStack(this.ordinal, net.minecraft.world.item.ItemStack.EMPTY);
80+
this.inventoryAdapter$getFabric().fabric$markDirty();
8081
return InventoryTransactionResult.builder().type(InventoryTransactionResult.Type.SUCCESS)
8182
.transaction(new SlotTransaction(this, ItemStackUtil.snapshotOf(stack), ItemStackSnapshot.empty()))
8283
.poll(ItemStackUtil.snapshotOf(stack)).build();
@@ -104,6 +105,7 @@ public InventoryTransactionResult offer(final ItemStackLike... stacks) {
104105
ItemStackSnapshot newStack = oldStack;
105106
int push = Math.min(remaining, maxStackSize);
106107
if (old.isEmpty() && this.slot.setStack(this.inventoryAdapter$getFabric(), ItemStackUtil.cloneDefensiveNative(nativeStack, push))) {
108+
this.inventoryAdapter$getFabric().fabric$markDirty();
107109
remaining -= push;
108110
newStack = ItemStackUtil.snapshotOf(stack);
109111
} else if (!old.isEmpty() && ItemStackUtil.compareIgnoreQuantity(old, nativeStack) && maxStackSize > old.getCount()) {
@@ -153,6 +155,7 @@ public InventoryTransactionResult set(final ItemStackLike stack) {
153155
final int push = Math.min(remaining, this.slot.getMaxStackSize(this.inventoryAdapter$getFabric()));
154156
net.minecraft.world.item.ItemStack newStack = ItemStackUtil.cloneDefensiveNative(nativeStack, push);
155157
if (this.slot.setStack(this.inventoryAdapter$getFabric(), newStack)) {
158+
this.inventoryAdapter$getFabric().fabric$markDirty();
156159
result.transaction(new SlotTransaction(this, oldSnap, ItemStackUtil.snapshotOf(newStack)));
157160
remaining -= push;
158161
}
@@ -167,6 +170,7 @@ public InventoryTransactionResult set(final ItemStackLike stack) {
167170
@Override
168171
public void clear() {
169172
this.slot.setStack(this.inventoryAdapter$getFabric(), net.minecraft.world.item.ItemStack.EMPTY);
173+
this.inventoryAdapter$getFabric().fabric$markDirty();
170174
}
171175

172176
@Override

src/mixins/java/org/spongepowered/common/mixin/api/minecraft/world/level/storage/ServerLevelDataMixin_API.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
*/
2525
package org.spongepowered.common.mixin.api.minecraft.world.level.storage;
2626

27+
import net.minecraft.server.level.ServerLevel;
2728
import net.minecraft.world.level.GameRules;
2829
import net.minecraft.world.level.storage.ServerLevelData;
2930
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -39,6 +40,7 @@
3940
import org.spongepowered.api.world.weather.WeatherType;
4041
import org.spongepowered.asm.mixin.Mixin;
4142
import org.spongepowered.asm.mixin.Shadow;
43+
import org.spongepowered.common.accessor.server.MinecraftServerAccessor;
4244
import org.spongepowered.common.accessor.world.level.GameRulesAccessor;
4345
import org.spongepowered.common.accessor.world.level.GameRules_ValueAccessor;
4446
import org.spongepowered.common.bridge.world.level.storage.ServerLevelDataBridge;
@@ -134,6 +136,7 @@ default <V> void setGameRule(final GameRule<V> gameRule, final V value) {
134136
@Override
135137
default void setDayTime(final MinecraftDayTime dayTime) {
136138
this.shadow$setDayTime(dayTime.asTicks().ticks());
139+
this.world().ifPresent(w -> ((MinecraftServerAccessor) ((ServerLevel) w).getServer()).invoker$synchronizeTime((ServerLevel) w));
137140
}
138141

139142
@Override

0 commit comments

Comments
 (0)